1111 BooleanType ,
1212 DataType ,
1313 DateType ,
14+ DecFloatType ,
1415 DecimalType ,
1516 DoubleType ,
1617 FloatType ,
@@ -114,20 +115,27 @@ class SnowDataTypeConversion:
114115 SnowDataTypeConversion(BooleanType, DecimalType, True, False),
115116 SnowDataTypeConversion(BooleanType, StringType, True, True),
116117 SnowDataTypeConversion(BooleanType, VariantType, True, True),
118+ SnowDataTypeConversion(BooleanType, DecFloatType, True, True),
117119 SnowDataTypeConversion(DateType, TimestampType, True, False),
118120 SnowDataTypeConversion(DateType, StringType, True, True),
119121 SnowDataTypeConversion(DateType, VariantType, True, False),
120122 SnowDataTypeConversion(FloatType, BooleanType, True, True),
121123 SnowDataTypeConversion(FloatType, DecimalType, True, True),
122124 SnowDataTypeConversion(FloatType, StringType, True, True),
123125 SnowDataTypeConversion(FloatType, VariantType, True, True),
126+ SnowDataTypeConversion(FloatType, DecFloatType, True, True),
127+ SnowDataTypeConversion(DecFloatType, BooleanType, True, True),
128+ SnowDataTypeConversion(DecFloatType, DecimalType, True, True),
129+ SnowDataTypeConversion(DecFloatType, FloatType, True, True),
130+ SnowDataTypeConversion(DecFloatType, StringType, True, True),
124131 SnowDataTypeConversion(GeographyType, VariantType, True, False),
125132 # SnowDataTypeConversion(GeometryType, VariantType, True, False), # GeometryType isn't available yet.
126133 SnowDataTypeConversion(DecimalType, BooleanType, True, True),
127134 SnowDataTypeConversion(DecimalType, FloatType, True, True),
128135 SnowDataTypeConversion(DecimalType, TimestampType, True, True),
129136 SnowDataTypeConversion(DecimalType, StringType, True, True),
130137 SnowDataTypeConversion(DecimalType, VariantType, True, True),
138+ SnowDataTypeConversion(DecimalType, DecFloatType, True, True),
131139 SnowDataTypeConversion(MapType, ArrayType, True, False),
132140 SnowDataTypeConversion(MapType, StringType, True, False),
133141 SnowDataTypeConversion(MapType, VariantType, True, True),
@@ -140,6 +148,7 @@ class SnowDataTypeConversion:
140148 SnowDataTypeConversion(StringType, BooleanType, True, True),
141149 SnowDataTypeConversion(StringType, DateType, True, True),
142150 SnowDataTypeConversion(StringType, FloatType, True, True),
151+ SnowDataTypeConversion(StringType, DecFloatType, True, True),
143152 SnowDataTypeConversion(StringType, DecimalType, True, True),
144153 SnowDataTypeConversion(StringType, TimeType, True, True),
145154 SnowDataTypeConversion(StringType, TimestampType, True, True),
@@ -271,6 +280,9 @@ def calculate_type(c1: ColumnType, c2: ColumnType, op: Union[str]):
271280 parameters_info = {"op" : op },
272281 raise_error = NotImplementedError ,
273282 )
283+ # DECFLOAT has highest numeric priority
284+ elif isinstance (t1 , DecFloatType ) or isinstance (t2 , DecFloatType ):
285+ return ColumnType (DecFloatType (), nullable )
274286 elif isinstance (t1 , (FloatType , DoubleType )) or isinstance (
275287 t2 , (FloatType , DoubleType )
276288 ):
0 commit comments