@@ -170,7 +170,14 @@ object QueryPlanSerde extends Logging with CometExprShim {
170170 classOf [DateSub ] -> CometDateSub ,
171171 classOf [TruncDate ] -> CometTruncDate ,
172172 classOf [TruncTimestamp ] -> CometTruncTimestamp ,
173- classOf [Flatten ] -> CometFlatten )
173+ classOf [Flatten ] -> CometFlatten ,
174+ classOf [Atan2 ] -> CometAtan2 ,
175+ classOf [Ceil ] -> CometCeil ,
176+ classOf [Floor ] -> CometFloor ,
177+ classOf [Log ] -> CometLog ,
178+ classOf [Log10 ] -> CometLog10 ,
179+ classOf [Log2 ] -> CometLog2 ,
180+ classOf [Pow ] -> CometScalarFunction [Pow ](" pow" ))
174181
175182 /**
176183 * Mapping of Spark aggregate expression class to Comet expression handler.
@@ -1108,12 +1115,6 @@ object QueryPlanSerde extends Logging with CometExprShim {
11081115// None
11091116// }
11101117
1111- case Atan2 (left, right) =>
1112- val leftExpr = exprToProtoInternal(left, inputs, binding)
1113- val rightExpr = exprToProtoInternal(right, inputs, binding)
1114- val optExpr = scalarFunctionExprToProto(" atan2" , leftExpr, rightExpr)
1115- optExprWithInfo(optExpr, expr, left, right)
1116-
11171118 case Hex (child) =>
11181119 val childExpr = exprToProtoInternal(child, inputs, binding)
11191120 val optExpr =
@@ -1131,56 +1132,6 @@ object QueryPlanSerde extends Logging with CometExprShim {
11311132 scalarFunctionExprToProtoWithReturnType(" unhex" , e.dataType, childExpr, failOnErrorExpr)
11321133 optExprWithInfo(optExpr, expr, unHex._1)
11331134
1134- case e @ Ceil (child) =>
1135- val childExpr = exprToProtoInternal(child, inputs, binding)
1136- child.dataType match {
1137- case t : DecimalType if t.scale == 0 => // zero scale is no-op
1138- childExpr
1139- case t : DecimalType if t.scale < 0 => // Spark disallows negative scale SPARK-30252
1140- withInfo(e, s " Decimal type $t has negative scale " )
1141- None
1142- case _ =>
1143- val optExpr = scalarFunctionExprToProtoWithReturnType(" ceil" , e.dataType, childExpr)
1144- optExprWithInfo(optExpr, expr, child)
1145- }
1146-
1147- case e @ Floor (child) =>
1148- val childExpr = exprToProtoInternal(child, inputs, binding)
1149- child.dataType match {
1150- case t : DecimalType if t.scale == 0 => // zero scale is no-op
1151- childExpr
1152- case t : DecimalType if t.scale < 0 => // Spark disallows negative scale SPARK-30252
1153- withInfo(e, s " Decimal type $t has negative scale " )
1154- None
1155- case _ =>
1156- val optExpr = scalarFunctionExprToProtoWithReturnType(" floor" , e.dataType, childExpr)
1157- optExprWithInfo(optExpr, expr, child)
1158- }
1159-
1160- // The expression for `log` functions is defined as null on numbers less than or equal
1161- // to 0. This matches Spark and Hive behavior, where non positive values eval to null
1162- // instead of NaN or -Infinity.
1163- case Log (child) =>
1164- val childExpr = exprToProtoInternal(nullIfNegative(child), inputs, binding)
1165- val optExpr = scalarFunctionExprToProto(" ln" , childExpr)
1166- optExprWithInfo(optExpr, expr, child)
1167-
1168- case Log10 (child) =>
1169- val childExpr = exprToProtoInternal(nullIfNegative(child), inputs, binding)
1170- val optExpr = scalarFunctionExprToProto(" log10" , childExpr)
1171- optExprWithInfo(optExpr, expr, child)
1172-
1173- case Log2 (child) =>
1174- val childExpr = exprToProtoInternal(nullIfNegative(child), inputs, binding)
1175- val optExpr = scalarFunctionExprToProto(" log2" , childExpr)
1176- optExprWithInfo(optExpr, expr, child)
1177-
1178- case Pow (left, right) =>
1179- val leftExpr = exprToProtoInternal(left, inputs, binding)
1180- val rightExpr = exprToProtoInternal(right, inputs, binding)
1181- val optExpr = scalarFunctionExprToProto(" pow" , leftExpr, rightExpr)
1182- optExprWithInfo(optExpr, expr, left, right)
1183-
11841135 case RegExpReplace (subject, pattern, replacement, startPosition) =>
11851136 if (! RegExp .isSupportedPattern(pattern.toString) &&
11861137 ! CometConf .COMET_REGEXP_ALLOW_INCOMPATIBLE .get()) {
@@ -1265,15 +1216,6 @@ object QueryPlanSerde extends Logging with CometExprShim {
12651216 None
12661217 }
12671218
1268- case BitwiseAnd (left, right) =>
1269- createBinaryExpr(
1270- expr,
1271- left,
1272- right,
1273- inputs,
1274- binding,
1275- (builder, binaryExpr) => builder.setBitwiseAnd(binaryExpr))
1276-
12771219 case n @ Not (In (_, _)) =>
12781220 CometNotIn .convert(n, inputs, binding)
12791221
@@ -1611,11 +1553,6 @@ object QueryPlanSerde extends Logging with CometExprShim {
16111553 Some (ExprOuterClass .Expr .newBuilder().setScalarFunc(builder).build())
16121554 }
16131555
1614- private def nullIfNegative (expression : Expression ): Expression = {
1615- val zero = Literal .default(expression.dataType)
1616- If (LessThanOrEqual (expression, zero), Literal .create(null , expression.dataType), expression)
1617- }
1618-
16191556 /**
16201557 * Returns true if given datatype is supported as a key in DataFusion sort merge join.
16211558 */
0 commit comments