@@ -166,7 +166,7 @@ object CometCast extends CometExpressionSerde[Cast] with CometExprShim {
166166 case (_ : DecimalType , _) =>
167167 canCastFromDecimal(toType)
168168 case (DataTypes .BooleanType , _) =>
169- canCastFromBoolean(toType)
169+ canCastFromBoolean(toType, evalMode )
170170 case (DataTypes .ByteType , _) =>
171171 canCastFromByte(toType, evalMode)
172172 case (DataTypes .ShortType , _) =>
@@ -283,12 +283,15 @@ object CometCast extends CometExpressionSerde[Cast] with CometExprShim {
283283 }
284284 }
285285
286- private def canCastFromBoolean (toType : DataType ): SupportLevel = toType match {
287- case DataTypes .ByteType | DataTypes .ShortType | DataTypes .IntegerType | DataTypes .LongType |
288- DataTypes .FloatType | DataTypes .DoubleType | _ : DecimalType | _ : TimestampType =>
289- Compatible ()
290- case _ => unsupported(DataTypes .BooleanType , toType)
291- }
286+ private def canCastFromBoolean (toType : DataType , evalMode : CometEvalMode .Value ): SupportLevel =
287+ toType match {
288+ case DataTypes .ByteType | DataTypes .ShortType | DataTypes .IntegerType | DataTypes .LongType |
289+ DataTypes .FloatType | DataTypes .DoubleType | _ : DecimalType =>
290+ Compatible ()
291+ case _ : TimestampType if evalMode == CometEvalMode .LEGACY =>
292+ Compatible ()
293+ case _ => unsupported(DataTypes .BooleanType , toType)
294+ }
292295
293296 private def canCastFromByte (toType : DataType , evalMode : CometEvalMode .Value ): SupportLevel =
294297 toType match {
0 commit comments