@@ -227,21 +227,21 @@ object V2ExpressionUtils extends SQLConfHelper with Logging {
227
227
228
228
private def convertPredicate (expr : GeneralScalarExpression ): Option [Expression ] = {
229
229
expr.name match {
230
- case " IS_NULL" => convertUnaryExpr(expr, IsNull )
231
- case " IS_NOT_NULL" => convertUnaryExpr(expr, IsNotNull )
232
- case " NOT" => convertUnaryExpr(expr, Not )
233
- case " =" => convertBinaryExpr(expr, EqualTo )
234
- case " <=>" => convertBinaryExpr(expr, EqualNullSafe )
235
- case " >" => convertBinaryExpr(expr, GreaterThan )
236
- case " >=" => convertBinaryExpr(expr, GreaterThanOrEqual )
237
- case " <" => convertBinaryExpr(expr, LessThan )
238
- case " <=" => convertBinaryExpr(expr, LessThanOrEqual )
230
+ case " IS_NULL" => convertUnaryExpr(expr, IsNull (_) )
231
+ case " IS_NOT_NULL" => convertUnaryExpr(expr, IsNotNull (_) )
232
+ case " NOT" => convertUnaryExpr(expr, Not (_) )
233
+ case " =" => convertBinaryExpr(expr, EqualTo (_, _) )
234
+ case " <=>" => convertBinaryExpr(expr, EqualNullSafe (_, _) )
235
+ case " >" => convertBinaryExpr(expr, GreaterThan (_, _) )
236
+ case " >=" => convertBinaryExpr(expr, GreaterThanOrEqual (_, _) )
237
+ case " <" => convertBinaryExpr(expr, LessThan (_, _) )
238
+ case " <=" => convertBinaryExpr(expr, LessThanOrEqual (_, _) )
239
239
case " <>" => convertBinaryExpr(expr, (left, right) => Not (EqualTo (left, right)))
240
- case " AND" => convertBinaryExpr(expr, And )
241
- case " OR" => convertBinaryExpr(expr, Or )
242
- case " STARTS_WITH" => convertBinaryExpr(expr, StartsWith )
243
- case " ENDS_WITH" => convertBinaryExpr(expr, EndsWith )
244
- case " CONTAINS" => convertBinaryExpr(expr, Contains )
240
+ case " AND" => convertBinaryExpr(expr, And (_, _) )
241
+ case " OR" => convertBinaryExpr(expr, Or (_, _) )
242
+ case " STARTS_WITH" => convertBinaryExpr(expr, StartsWith (_, _) )
243
+ case " ENDS_WITH" => convertBinaryExpr(expr, EndsWith (_, _) )
244
+ case " CONTAINS" => convertBinaryExpr(expr, Contains (_, _) )
245
245
case " IN" => convertExpr(expr, children => In (children.head, children.tail))
246
246
case _ => None
247
247
}
@@ -278,9 +278,9 @@ object V2ExpressionUtils extends SQLConfHelper with Logging {
278
278
case " /" => convertBinaryExpr(expr, Divide (_, _, evalMode = EvalMode .ANSI ))
279
279
case " %" => convertBinaryExpr(expr, Remainder (_, _, evalMode = EvalMode .ANSI ))
280
280
case " ABS" => convertUnaryExpr(expr, Abs (_, failOnError = true ))
281
- case " COALESCE" => convertExpr(expr, Coalesce )
282
- case " GREATEST" => convertExpr(expr, Greatest )
283
- case " LEAST" => convertExpr(expr, Least )
281
+ case " COALESCE" => convertExpr(expr, Coalesce (_) )
282
+ case " GREATEST" => convertExpr(expr, Greatest (_) )
283
+ case " LEAST" => convertExpr(expr, Least (_) )
284
284
case " RAND" =>
285
285
if (expr.children.isEmpty) {
286
286
Some (new Rand ())
@@ -289,20 +289,20 @@ object V2ExpressionUtils extends SQLConfHelper with Logging {
289
289
} else {
290
290
None
291
291
}
292
- case " LOG" => convertBinaryExpr(expr, Logarithm )
293
- case " LOG10" => convertUnaryExpr(expr, Log10 )
294
- case " LOG2" => convertUnaryExpr(expr, Log2 )
295
- case " LN" => convertUnaryExpr(expr, Log )
296
- case " EXP" => convertUnaryExpr(expr, Exp )
297
- case " POWER" => convertBinaryExpr(expr, Pow )
298
- case " SQRT" => convertUnaryExpr(expr, Sqrt )
299
- case " FLOOR" => convertUnaryExpr(expr, Floor )
300
- case " CEIL" => convertUnaryExpr(expr, Ceil )
292
+ case " LOG" => convertBinaryExpr(expr, Logarithm (_, _) )
293
+ case " LOG10" => convertUnaryExpr(expr, Log10 (_) )
294
+ case " LOG2" => convertUnaryExpr(expr, Log2 (_) )
295
+ case " LN" => convertUnaryExpr(expr, Log (_) )
296
+ case " EXP" => convertUnaryExpr(expr, Exp (_) )
297
+ case " POWER" => convertBinaryExpr(expr, Pow (_, _) )
298
+ case " SQRT" => convertUnaryExpr(expr, Sqrt (_) )
299
+ case " FLOOR" => convertUnaryExpr(expr, Floor (_) )
300
+ case " CEIL" => convertUnaryExpr(expr, Ceil (_) )
301
301
case " ROUND" => convertBinaryExpr(expr, Round (_, _, ansiEnabled = true ))
302
- case " CBRT" => convertUnaryExpr(expr, Cbrt )
303
- case " DEGREES" => convertUnaryExpr(expr, ToDegrees )
304
- case " RADIANS" => convertUnaryExpr(expr, ToRadians )
305
- case " SIGN" => convertUnaryExpr(expr, Signum )
302
+ case " CBRT" => convertUnaryExpr(expr, Cbrt (_) )
303
+ case " DEGREES" => convertUnaryExpr(expr, ToDegrees (_) )
304
+ case " RADIANS" => convertUnaryExpr(expr, ToRadians (_) )
305
+ case " SIGN" => convertUnaryExpr(expr, Signum (_) )
306
306
case " WIDTH_BUCKET" =>
307
307
convertExpr(
308
308
expr,
@@ -313,30 +313,30 @@ object V2ExpressionUtils extends SQLConfHelper with Logging {
313
313
314
314
private def convertTrigonometricFunc (expr : GeneralScalarExpression ): Option [Expression ] = {
315
315
expr.name match {
316
- case " SIN" => convertUnaryExpr(expr, Sin )
317
- case " SINH" => convertUnaryExpr(expr, Sinh )
318
- case " COS" => convertUnaryExpr(expr, Cos )
319
- case " COSH" => convertUnaryExpr(expr, Cosh )
320
- case " TAN" => convertUnaryExpr(expr, Tan )
321
- case " TANH" => convertUnaryExpr(expr, Tanh )
322
- case " COT" => convertUnaryExpr(expr, Cot )
323
- case " ASIN" => convertUnaryExpr(expr, Asin )
324
- case " ASINH" => convertUnaryExpr(expr, Asinh )
325
- case " ACOS" => convertUnaryExpr(expr, Acos )
326
- case " ACOSH" => convertUnaryExpr(expr, Acosh )
327
- case " ATAN" => convertUnaryExpr(expr, Atan )
328
- case " ATANH" => convertUnaryExpr(expr, Atanh )
329
- case " ATAN2" => convertBinaryExpr(expr, Atan2 )
316
+ case " SIN" => convertUnaryExpr(expr, Sin (_) )
317
+ case " SINH" => convertUnaryExpr(expr, Sinh (_) )
318
+ case " COS" => convertUnaryExpr(expr, Cos (_) )
319
+ case " COSH" => convertUnaryExpr(expr, Cosh (_) )
320
+ case " TAN" => convertUnaryExpr(expr, Tan (_) )
321
+ case " TANH" => convertUnaryExpr(expr, Tanh (_) )
322
+ case " COT" => convertUnaryExpr(expr, Cot (_) )
323
+ case " ASIN" => convertUnaryExpr(expr, Asin (_) )
324
+ case " ASINH" => convertUnaryExpr(expr, Asinh (_) )
325
+ case " ACOS" => convertUnaryExpr(expr, Acos (_) )
326
+ case " ACOSH" => convertUnaryExpr(expr, Acosh (_) )
327
+ case " ATAN" => convertUnaryExpr(expr, Atan (_) )
328
+ case " ATANH" => convertUnaryExpr(expr, Atanh (_) )
329
+ case " ATAN2" => convertBinaryExpr(expr, Atan2 (_, _) )
330
330
case _ => None
331
331
}
332
332
}
333
333
334
334
private def convertBitwiseFunc (expr : GeneralScalarExpression ): Option [Expression ] = {
335
335
expr.name match {
336
- case " ~" => convertUnaryExpr(expr, BitwiseNot )
337
- case " &" => convertBinaryExpr(expr, BitwiseAnd )
338
- case " |" => convertBinaryExpr(expr, BitwiseOr )
339
- case " ^" => convertBinaryExpr(expr, BitwiseXor )
336
+ case " ~" => convertUnaryExpr(expr, BitwiseNot (_) )
337
+ case " &" => convertBinaryExpr(expr, BitwiseAnd (_, _) )
338
+ case " |" => convertBinaryExpr(expr, BitwiseOr (_, _) )
339
+ case " ^" => convertBinaryExpr(expr, BitwiseXor (_, _) )
340
340
case _ => None
341
341
}
342
342
}
0 commit comments