cloud-fan commented on code in PR #48854:
URL: https://github.com/apache/spark/pull/48854#discussion_r1851676285
##########
sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/pipeOperators.scala:
##########
@@ -18,26 +18,45 @@
package org.apache.spark.sql.catalyst.expressions
import org.apache.spark.sql.catalyst.expressions.aggregate.AggregateFunction
-import org.apache.spark.sql.catalyst.trees.TreePattern.{PIPE_OPERATOR_SELECT,
RUNTIME_REPLACEABLE, TreePattern}
import org.apache.spark.sql.errors.QueryCompilationErrors
/**
- * Represents a SELECT clause when used with the |> SQL pipe operator.
- * We use this to make sure that no aggregate functions exist in the SELECT
expressions.
+ * Represents an expression when used with a SQL pipe operator.
+ * We use this to check invariants about whether aggregate functions may exist
in these expressions.
+ * @param child The child expression.
+ * @param isAggregate Whether the pipe operator is |> AGGREGATE.
+ * If true, the child expression must contain at least one
aggregate function.
+ * If false, the child expression must not contain any
aggregate functions.
+ * @param clause The clause of the pipe operator. This is used to generate
error messages.
*/
-case class PipeSelect(child: Expression)
+case class PipeExpression(child: Expression, isAggregate: Boolean, clause:
String)
extends UnaryExpression with RuntimeReplaceable {
- final override val nodePatterns: Seq[TreePattern] =
Seq(PIPE_OPERATOR_SELECT, RUNTIME_REPLACEABLE)
- override def withNewChildInternal(newChild: Expression): Expression =
PipeSelect(newChild)
- override lazy val replacement: Expression = {
+ override def withNewChildInternal(newChild: Expression): Expression =
+ PipeExpression(newChild, isAggregate, clause)
+ override lazy val replacement: Expression = if (isAggregate) {
+ // Make sure the child expression contains at least one aggregate function.
+ var foundAggregate = false
Review Comment:
nit: `val hasAggFunc = this.exists(_.isInstanceOf[AggregateFunction])`
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]