|
20 | 20 | package org.apache.comet.serde |
21 | 21 |
|
22 | 22 | import scala.annotation.tailrec |
23 | | - |
24 | | -import org.apache.spark.sql.catalyst.expressions.{ArrayAppend, ArrayContains, ArrayDistinct, ArrayExcept, ArrayInsert, ArrayIntersect, ArrayJoin, ArrayMax, ArrayMin, ArrayRemove, ArrayRepeat, ArraysOverlap, ArrayUnion, Attribute, CreateArray, ElementAt, Expression, Flatten, GetArrayItem, Literal} |
| 23 | +import org.apache.spark.sql.catalyst.expressions.{ArrayAppend, ArrayContains, ArrayDistinct, ArrayExcept, ArrayInsert, ArrayIntersect, ArrayJoin, ArrayMax, ArrayMin, ArrayRemove, ArrayRepeat, ArrayUnion, ArraysOverlap, Attribute, CreateArray, ElementAt, Expression, Flatten, GetArrayItem, Literal, Reverse} |
25 | 24 | import org.apache.spark.sql.internal.SQLConf |
26 | 25 | import org.apache.spark.sql.types._ |
27 | | - |
28 | 26 | import org.apache.comet.CometSparkSessionExtensions.withInfo |
29 | 27 | import org.apache.comet.serde.QueryPlanSerde._ |
30 | 28 | import org.apache.comet.shims.CometExprShim |
@@ -432,6 +430,25 @@ object CometGetArrayItem extends CometExpressionSerde[GetArrayItem] { |
432 | 430 | } |
433 | 431 | } |
434 | 432 |
|
| 433 | +object CometArrayReverse extends CometExpressionSerde[Reverse] with ArraysBase { |
| 434 | + override def convert( |
| 435 | + expr: Reverse, |
| 436 | + inputs: Seq[Attribute], |
| 437 | + binding: Boolean): Option[ExprOuterClass.Expr] = { |
| 438 | + val inputTypes = expr.children.map(_.dataType).toSet |
| 439 | + for (dt <- inputTypes) { |
| 440 | + if (!isTypeSupported(dt)) { |
| 441 | + withInfo(expr, s"data type not supported: $dt") |
| 442 | + return None |
| 443 | + } |
| 444 | + } |
| 445 | + val reverseExprProto = exprToProto(expr.child, inputs, binding) |
| 446 | + val reverseScalarExpr = scalarFunctionExprToProto("array_reverse", reverseExprProto) |
| 447 | + optExprWithInfo(reverseScalarExpr, expr, expr.children: _*) |
| 448 | + } |
| 449 | + |
| 450 | +} |
| 451 | + |
435 | 452 | object CometElementAt extends CometExpressionSerde[ElementAt] { |
436 | 453 |
|
437 | 454 | override def convert( |
|
0 commit comments