|
11 | 11 | from dateutil import parser |
12 | 12 | from typing import Callable, Dict, Optional |
13 | 13 |
|
| 14 | +from databricks.sql.thrift_api.TCLIService import ttypes |
| 15 | + |
14 | 16 | logger = logging.getLogger(__name__) |
15 | 17 |
|
16 | 18 |
|
@@ -56,43 +58,49 @@ class SqlType: |
56 | 58 | after normalize_sea_type_to_thrift processing (lowercase, without _TYPE suffix). |
57 | 59 | """ |
58 | 60 |
|
| 61 | + @staticmethod |
| 62 | + def _get_type_name(thrift_type_id: int) -> str: |
| 63 | + type_name = ttypes.TTypeId._VALUES_TO_NAMES[thrift_type_id] |
| 64 | + type_name = type_name.lower() |
| 65 | + if type_name.endswith("_type"): |
| 66 | + type_name = type_name[:-5] |
| 67 | + return type_name |
| 68 | + |
59 | 69 | # Numeric types |
60 | | - TINYINT = "tinyint" # Maps to TTypeId.TINYINT_TYPE |
61 | | - SMALLINT = "smallint" # Maps to TTypeId.SMALLINT_TYPE |
62 | | - INT = "int" # Maps to TTypeId.INT_TYPE |
63 | | - BIGINT = "bigint" # Maps to TTypeId.BIGINT_TYPE |
64 | | - FLOAT = "float" # Maps to TTypeId.FLOAT_TYPE |
65 | | - DOUBLE = "double" # Maps to TTypeId.DOUBLE_TYPE |
66 | | - DECIMAL = "decimal" # Maps to TTypeId.DECIMAL_TYPE |
| 70 | + TINYINT = _get_type_name(ttypes.TTypeId.TINYINT_TYPE) |
| 71 | + SMALLINT = _get_type_name(ttypes.TTypeId.SMALLINT_TYPE) |
| 72 | + INT = _get_type_name(ttypes.TTypeId.INT_TYPE) |
| 73 | + BIGINT = _get_type_name(ttypes.TTypeId.BIGINT_TYPE) |
| 74 | + FLOAT = _get_type_name(ttypes.TTypeId.FLOAT_TYPE) |
| 75 | + DOUBLE = _get_type_name(ttypes.TTypeId.DOUBLE_TYPE) |
| 76 | + DECIMAL = _get_type_name(ttypes.TTypeId.DECIMAL_TYPE) |
67 | 77 |
|
68 | 78 | # Boolean type |
69 | | - BOOLEAN = "boolean" # Maps to TTypeId.BOOLEAN_TYPE |
| 79 | + BOOLEAN = _get_type_name(ttypes.TTypeId.BOOLEAN_TYPE) |
70 | 80 |
|
71 | 81 | # Date/Time types |
72 | | - DATE = "date" # Maps to TTypeId.DATE_TYPE |
73 | | - TIMESTAMP = "timestamp" # Maps to TTypeId.TIMESTAMP_TYPE |
74 | | - INTERVAL_YEAR_MONTH = ( |
75 | | - "interval_year_month" # Maps to TTypeId.INTERVAL_YEAR_MONTH_TYPE |
76 | | - ) |
77 | | - INTERVAL_DAY_TIME = "interval_day_time" # Maps to TTypeId.INTERVAL_DAY_TIME_TYPE |
| 82 | + DATE = _get_type_name(ttypes.TTypeId.DATE_TYPE) |
| 83 | + TIMESTAMP = _get_type_name(ttypes.TTypeId.TIMESTAMP_TYPE) |
| 84 | + INTERVAL_YEAR_MONTH = _get_type_name(ttypes.TTypeId.INTERVAL_YEAR_MONTH_TYPE) |
| 85 | + INTERVAL_DAY_TIME = _get_type_name(ttypes.TTypeId.INTERVAL_DAY_TIME_TYPE) |
78 | 86 |
|
79 | 87 | # String types |
80 | | - CHAR = "char" # Maps to TTypeId.CHAR_TYPE |
81 | | - VARCHAR = "varchar" # Maps to TTypeId.VARCHAR_TYPE |
82 | | - STRING = "string" # Maps to TTypeId.STRING_TYPE |
| 88 | + CHAR = _get_type_name(ttypes.TTypeId.CHAR_TYPE) |
| 89 | + VARCHAR = _get_type_name(ttypes.TTypeId.VARCHAR_TYPE) |
| 90 | + STRING = _get_type_name(ttypes.TTypeId.STRING_TYPE) |
83 | 91 |
|
84 | 92 | # Binary type |
85 | | - BINARY = "binary" # Maps to TTypeId.BINARY_TYPE |
| 93 | + BINARY = _get_type_name(ttypes.TTypeId.BINARY_TYPE) |
86 | 94 |
|
87 | 95 | # Complex types |
88 | | - ARRAY = "array" # Maps to TTypeId.ARRAY_TYPE |
89 | | - MAP = "map" # Maps to TTypeId.MAP_TYPE |
90 | | - STRUCT = "struct" # Maps to TTypeId.STRUCT_TYPE |
| 96 | + ARRAY = _get_type_name(ttypes.TTypeId.ARRAY_TYPE) |
| 97 | + MAP = _get_type_name(ttypes.TTypeId.MAP_TYPE) |
| 98 | + STRUCT = _get_type_name(ttypes.TTypeId.STRUCT_TYPE) |
91 | 99 |
|
92 | 100 | # Other types |
93 | | - NULL = "null" # Maps to TTypeId.NULL_TYPE |
94 | | - UNION = "union" # Maps to TTypeId.UNION_TYPE |
95 | | - USER_DEFINED = "user_defined" # Maps to TTypeId.USER_DEFINED_TYPE |
| 101 | + NULL = _get_type_name(ttypes.TTypeId.NULL_TYPE) |
| 102 | + UNION = _get_type_name(ttypes.TTypeId.UNION_TYPE) |
| 103 | + USER_DEFINED = _get_type_name(ttypes.TTypeId.USER_DEFINED_TYPE) |
96 | 104 |
|
97 | 105 |
|
98 | 106 | class SqlTypeConverter: |
|
0 commit comments