cloud-fan commented on code in PR #48748: URL: https://github.com/apache/spark/pull/48748#discussion_r1843591341
########## sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/aggregate/SupportsOrderingWithinGroup.scala: ########## @@ -20,9 +20,28 @@ package org.apache.spark.sql.catalyst.expressions.aggregate import org.apache.spark.sql.catalyst.expressions.SortOrder /** - * The trait used to set the [[SortOrder]] after inverse distribution functions parsed. + * The trait used to set the [[SortOrder]] for supporting functions. */ -trait SupportsOrderingWithinGroup { self: AggregateFunction => - def orderingFilled: Boolean = false +trait SupportsOrderingWithinGroup { def withOrderingWithinGroup(orderingWithinGroup: Seq[SortOrder]): AggregateFunction + + /** Indicator that ordering was set. */ + def orderingFilled: Boolean + + /** + * Tells Analyzer that WITHIN GROUP (ORDER BY ...) is mandatory for function. + * + * @see [[QueryCompilationErrors.functionMissingWithinGroupError]] + * @see [[org.apache.spark.sql.catalyst.analysis.Analyzer]] Review Comment: this isn't very useful as Analyzer has thousands of lines of code... ########## sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/aggregate/SupportsOrderingWithinGroup.scala: ########## @@ -20,9 +20,28 @@ package org.apache.spark.sql.catalyst.expressions.aggregate import org.apache.spark.sql.catalyst.expressions.SortOrder /** - * The trait used to set the [[SortOrder]] after inverse distribution functions parsed. + * The trait used to set the [[SortOrder]] for supporting functions. */ -trait SupportsOrderingWithinGroup { self: AggregateFunction => - def orderingFilled: Boolean = false +trait SupportsOrderingWithinGroup { def withOrderingWithinGroup(orderingWithinGroup: Seq[SortOrder]): AggregateFunction + + /** Indicator that ordering was set. */ + def orderingFilled: Boolean + + /** + * Tells Analyzer that WITHIN GROUP (ORDER BY ...) is mandatory for function. + * + * @see [[QueryCompilationErrors.functionMissingWithinGroupError]] + * @see [[org.apache.spark.sql.catalyst.analysis.Analyzer]] + */ + def isOrderingMandatory: Boolean + + /** + * Tells Analyzer that DISTINCT is supported. + * The DISTINCT can conflict with order so some functions can ban it. + * + * @see [[QueryCompilationErrors.functionMissingWithinGroupError]] + * @see [[org.apache.spark.sql.catalyst.analysis.Analyzer]] Review Comment: ditto -- 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: reviews-unsubscr...@spark.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org For additional commands, e-mail: reviews-h...@spark.apache.org