@@ -170,7 +170,14 @@ object QueryPlanSerde extends Logging with CometExprShim {
170
170
classOf [DateSub ] -> CometDateSub ,
171
171
classOf [TruncDate ] -> CometTruncDate ,
172
172
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" ))
174
181
175
182
/**
176
183
* Mapping of Spark aggregate expression class to Comet expression handler.
@@ -1108,12 +1115,6 @@ object QueryPlanSerde extends Logging with CometExprShim {
1108
1115
// None
1109
1116
// }
1110
1117
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
-
1117
1118
case Hex (child) =>
1118
1119
val childExpr = exprToProtoInternal(child, inputs, binding)
1119
1120
val optExpr =
@@ -1131,56 +1132,6 @@ object QueryPlanSerde extends Logging with CometExprShim {
1131
1132
scalarFunctionExprToProtoWithReturnType(" unhex" , e.dataType, childExpr, failOnErrorExpr)
1132
1133
optExprWithInfo(optExpr, expr, unHex._1)
1133
1134
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
-
1184
1135
case RegExpReplace (subject, pattern, replacement, startPosition) =>
1185
1136
if (! RegExp .isSupportedPattern(pattern.toString) &&
1186
1137
! CometConf .COMET_REGEXP_ALLOW_INCOMPATIBLE .get()) {
@@ -1265,15 +1216,6 @@ object QueryPlanSerde extends Logging with CometExprShim {
1265
1216
None
1266
1217
}
1267
1218
1268
- case BitwiseAnd (left, right) =>
1269
- createBinaryExpr(
1270
- expr,
1271
- left,
1272
- right,
1273
- inputs,
1274
- binding,
1275
- (builder, binaryExpr) => builder.setBitwiseAnd(binaryExpr))
1276
-
1277
1219
case n @ Not (In (_, _)) =>
1278
1220
CometNotIn .convert(n, inputs, binding)
1279
1221
@@ -1611,11 +1553,6 @@ object QueryPlanSerde extends Logging with CometExprShim {
1611
1553
Some (ExprOuterClass .Expr .newBuilder().setScalarFunc(builder).build())
1612
1554
}
1613
1555
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
-
1619
1556
/**
1620
1557
* Returns true if given datatype is supported as a key in DataFusion sort merge join.
1621
1558
*/
0 commit comments