6
6
from datetime import date , datetime , time
7
7
from decimal import Decimal
8
8
9
- from databricks .sql .conversion import SqlType , SqlTypeConverter
9
+ from databricks .sql .backend . sea . conversion import SqlType , SqlTypeConverter
10
10
11
11
12
12
class TestSqlType (unittest .TestCase ):
@@ -15,48 +15,40 @@ class TestSqlType(unittest.TestCase):
15
15
def test_is_numeric (self ):
16
16
"""Test the is_numeric method."""
17
17
self .assertTrue (SqlType .is_numeric (SqlType .INT ))
18
- self .assertTrue (SqlType .is_numeric (SqlType .TINYINT ))
19
- self .assertTrue (SqlType .is_numeric (SqlType .SMALLINT ))
20
- self .assertTrue (SqlType .is_numeric (SqlType .BIGINT ))
18
+ self .assertTrue (SqlType .is_numeric (SqlType .BYTE ))
19
+ self .assertTrue (SqlType .is_numeric (SqlType .SHORT ))
20
+ self .assertTrue (SqlType .is_numeric (SqlType .LONG ))
21
21
self .assertTrue (SqlType .is_numeric (SqlType .FLOAT ))
22
22
self .assertTrue (SqlType .is_numeric (SqlType .DOUBLE ))
23
23
self .assertTrue (SqlType .is_numeric (SqlType .DECIMAL ))
24
- self .assertTrue (SqlType .is_numeric (SqlType .NUMERIC ))
25
24
self .assertFalse (SqlType .is_numeric (SqlType .BOOLEAN ))
26
25
self .assertFalse (SqlType .is_numeric (SqlType .STRING ))
27
26
self .assertFalse (SqlType .is_numeric (SqlType .DATE ))
28
27
29
28
def test_is_boolean (self ):
30
29
"""Test the is_boolean method."""
31
30
self .assertTrue (SqlType .is_boolean (SqlType .BOOLEAN ))
32
- self .assertTrue (SqlType .is_boolean (SqlType .BIT ))
33
31
self .assertFalse (SqlType .is_boolean (SqlType .INT ))
34
32
self .assertFalse (SqlType .is_boolean (SqlType .STRING ))
35
33
36
34
def test_is_datetime (self ):
37
35
"""Test the is_datetime method."""
38
36
self .assertTrue (SqlType .is_datetime (SqlType .DATE ))
39
- self .assertTrue (SqlType .is_datetime (SqlType .TIME ))
40
37
self .assertTrue (SqlType .is_datetime (SqlType .TIMESTAMP ))
41
- self .assertTrue (SqlType .is_datetime (SqlType .TIMESTAMP_NTZ ))
42
- self .assertTrue (SqlType .is_datetime (SqlType .TIMESTAMP_LTZ ))
43
- self .assertTrue (SqlType .is_datetime (SqlType .TIMESTAMP_TZ ))
38
+ self .assertTrue (SqlType .is_datetime (SqlType .INTERVAL ))
44
39
self .assertFalse (SqlType .is_datetime (SqlType .INT ))
45
40
self .assertFalse (SqlType .is_datetime (SqlType .STRING ))
46
41
47
42
def test_is_string (self ):
48
43
"""Test the is_string method."""
49
44
self .assertTrue (SqlType .is_string (SqlType .CHAR ))
50
- self .assertTrue (SqlType .is_string (SqlType .VARCHAR ))
51
45
self .assertTrue (SqlType .is_string (SqlType .STRING ))
52
- self .assertTrue (SqlType .is_string (SqlType .TEXT ))
53
46
self .assertFalse (SqlType .is_string (SqlType .INT ))
54
47
self .assertFalse (SqlType .is_string (SqlType .DATE ))
55
48
56
49
def test_is_binary (self ):
57
50
"""Test the is_binary method."""
58
51
self .assertTrue (SqlType .is_binary (SqlType .BINARY ))
59
- self .assertTrue (SqlType .is_binary (SqlType .VARBINARY ))
60
52
self .assertFalse (SqlType .is_binary (SqlType .INT ))
61
53
self .assertFalse (SqlType .is_binary (SqlType .STRING ))
62
54
@@ -75,9 +67,9 @@ class TestSqlTypeConverter(unittest.TestCase):
75
67
def test_numeric_conversions (self ):
76
68
"""Test numeric type conversions."""
77
69
self .assertEqual (SqlTypeConverter .convert_value ("123" , SqlType .INT ), 123 )
78
- self .assertEqual (SqlTypeConverter .convert_value ("123" , SqlType .TINYINT ), 123 )
79
- self .assertEqual (SqlTypeConverter .convert_value ("123" , SqlType .SMALLINT ), 123 )
80
- self .assertEqual (SqlTypeConverter .convert_value ("123" , SqlType .BIGINT ), 123 )
70
+ self .assertEqual (SqlTypeConverter .convert_value ("123" , SqlType .BYTE ), 123 )
71
+ self .assertEqual (SqlTypeConverter .convert_value ("123" , SqlType .SHORT ), 123 )
72
+ self .assertEqual (SqlTypeConverter .convert_value ("123" , SqlType .LONG ), 123 )
81
73
self .assertEqual (
82
74
SqlTypeConverter .convert_value ("123.45" , SqlType .FLOAT ), 123.45
83
75
)
@@ -113,9 +105,6 @@ def test_datetime_conversions(self):
113
105
SqlTypeConverter .convert_value ("2023-01-15" , SqlType .DATE ),
114
106
date (2023 , 1 , 15 ),
115
107
)
116
- self .assertEqual (
117
- SqlTypeConverter .convert_value ("14:30:45" , SqlType .TIME ), time (14 , 30 , 45 )
118
- )
119
108
self .assertEqual (
120
109
SqlTypeConverter .convert_value ("2023-01-15 14:30:45" , SqlType .TIMESTAMP ),
121
110
datetime (2023 , 1 , 15 , 14 , 30 , 45 ),
@@ -124,15 +113,19 @@ def test_datetime_conversions(self):
124
113
def test_string_conversions (self ):
125
114
"""Test string type conversions."""
126
115
self .assertEqual (SqlTypeConverter .convert_value ("test" , SqlType .STRING ), "test" )
116
+ self .assertEqual (SqlTypeConverter .convert_value ("test" , SqlType .CHAR ), "test" )
117
+
118
+ def test_binary_conversions (self ):
119
+ """Test binary type conversions."""
120
+ hex_str = "68656c6c6f" # "hello" in hex
121
+ expected_bytes = b"hello"
122
+
127
123
self .assertEqual (
128
- SqlTypeConverter .convert_value ("test" , SqlType .VARCHAR ), "test"
124
+ SqlTypeConverter .convert_value (hex_str , SqlType .BINARY ), expected_bytes
129
125
)
130
- self .assertEqual (SqlTypeConverter .convert_value ("test" , SqlType .CHAR ), "test" )
131
- self .assertEqual (SqlTypeConverter .convert_value ("test" , SqlType .TEXT ), "test" )
132
126
133
127
def test_error_handling (self ):
134
128
"""Test error handling in conversions."""
135
- # Test invalid conversions - should return original value
136
129
self .assertEqual (SqlTypeConverter .convert_value ("abc" , SqlType .INT ), "abc" )
137
130
self .assertEqual (SqlTypeConverter .convert_value ("abc" , SqlType .FLOAT ), "abc" )
138
131
self .assertEqual (SqlTypeConverter .convert_value ("abc" , SqlType .DECIMAL ), "abc" )
@@ -155,6 +148,10 @@ def test_complex_type_handling(self):
155
148
self .assertEqual (
156
149
SqlTypeConverter .convert_value ('{"a": 1}' , "struct<a:int>" ), '{"a": 1}'
157
150
)
151
+ self .assertEqual (
152
+ SqlTypeConverter .convert_value ('{"a": 1}' , SqlType .USER_DEFINED_TYPE ),
153
+ '{"a": 1}' ,
154
+ )
158
155
159
156
160
157
if __name__ == "__main__" :
0 commit comments