aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Expression.scala2
-rw-r--r--sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/aggregate/interfaces.scala15
2 files changed, 15 insertions, 2 deletions
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Expression.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Expression.scala
index b4fe151f27..2ec46216e1 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Expression.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/Expression.scala
@@ -185,7 +185,7 @@ abstract class Expression extends TreeNode[Expression] {
*/
def prettyName: String = nodeName.toLowerCase
- private def flatArguments = productIterator.flatMap {
+ protected def flatArguments = productIterator.flatMap {
case t: Traversable[_] => t
case single => single :: Nil
}
diff --git a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/aggregate/interfaces.scala b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/aggregate/interfaces.scala
index d31ccf9985..504cea5279 100644
--- a/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/aggregate/interfaces.scala
+++ b/sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/aggregate/interfaces.scala
@@ -126,7 +126,14 @@ private[sql] case class AggregateExpression(
AttributeSet(childReferences)
}
- override def toString: String = s"($aggregateFunction,mode=$mode,isDistinct=$isDistinct)"
+ override def toString: String = {
+ val prefix = mode match {
+ case Partial => "partial_"
+ case PartialMerge => "merge_"
+ case Final | Complete => ""
+ }
+ prefix + aggregateFunction.toAggString(isDistinct)
+ }
override def sql: String = aggregateFunction.sql(isDistinct)
}
@@ -203,6 +210,12 @@ sealed abstract class AggregateFunction extends Expression with ImplicitCastInpu
val distinct = if (isDistinct) "DISTINCT " else ""
s"$prettyName($distinct${children.map(_.sql).mkString(", ")})"
}
+
+ /** String representation used in explain plans. */
+ def toAggString(isDistinct: Boolean): String = {
+ val start = if (isDistinct) "(distinct " else "("
+ prettyName + flatArguments.mkString(start, ", ", ")")
+ }
}
/**