This is an automated email from the ASF dual-hosted git repository.
zhztheplayer pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gluten.git
The following commit(s) were added to refs/heads/main by this push:
new 9a4f249be9 [VL] Improve FlushableHashAggregateRule (#13033)
9a4f249be9 is described below
commit 9a4f249be9eab17c92f1b2d8f75ebcbb5941f395
Author: Hongze Zhang <[email protected]>
AuthorDate: Mon Sep 21 04:58:10 2026 +0200
[VL] Improve FlushableHashAggregateRule (#13033)
---
.../extension/FlushableHashAggregateRule.scala | 117 ++++++---------------
.../execution/VeloxAggregateFunctionsSuite.scala | 36 ++++++-
.../ss_max.sf100/explain.txt | 4 +-
.../ss_max.sf100/simplified.txt | 2 +-
.../ss_max/explain.txt | 4 +-
.../ss_max/simplified.txt | 2 +-
.../q16.sf100/explain.txt | 8 +-
.../q16.sf100/simplified.txt | 4 +-
.../gluten-approved-plans-v1_4/q16/explain.txt | 8 +-
.../gluten-approved-plans-v1_4/q16/simplified.txt | 4 +-
.../q28.sf100/explain.txt | 24 ++---
.../q28.sf100/simplified.txt | 12 +--
.../gluten-approved-plans-v1_4/q28/explain.txt | 24 ++---
.../gluten-approved-plans-v1_4/q28/simplified.txt | 12 +--
.../q94.sf100/explain.txt | 8 +-
.../q94.sf100/simplified.txt | 4 +-
.../gluten-approved-plans-v1_4/q94/explain.txt | 8 +-
.../gluten-approved-plans-v1_4/q94/simplified.txt | 4 +-
.../q95.sf100/explain.txt | 8 +-
.../q95.sf100/simplified.txt | 4 +-
.../gluten-approved-plans-v1_4/q95/explain.txt | 8 +-
.../gluten-approved-plans-v1_4/q95/simplified.txt | 4 +-
.../ss_max.sf100/explain.txt | 4 +-
.../ss_max.sf100/simplified.txt | 2 +-
.../ss_max/explain.txt | 4 +-
.../ss_max/simplified.txt | 2 +-
.../q16.sf100/explain.txt | 8 +-
.../q16.sf100/simplified.txt | 4 +-
.../gluten-approved-plans-v1_4/q16/explain.txt | 8 +-
.../gluten-approved-plans-v1_4/q16/simplified.txt | 4 +-
.../q28.sf100/explain.txt | 24 ++---
.../q28.sf100/simplified.txt | 12 +--
.../gluten-approved-plans-v1_4/q28/explain.txt | 24 ++---
.../gluten-approved-plans-v1_4/q28/simplified.txt | 12 +--
.../q94.sf100/explain.txt | 8 +-
.../q94.sf100/simplified.txt | 4 +-
.../gluten-approved-plans-v1_4/q94/explain.txt | 8 +-
.../gluten-approved-plans-v1_4/q94/simplified.txt | 4 +-
.../q95.sf100/explain.txt | 8 +-
.../q95.sf100/simplified.txt | 4 +-
.../gluten-approved-plans-v1_4/q95/explain.txt | 8 +-
.../gluten-approved-plans-v1_4/q95/simplified.txt | 4 +-
42 files changed, 220 insertions(+), 245 deletions(-)
diff --git
a/backends-velox/src/main/scala/org/apache/gluten/extension/FlushableHashAggregateRule.scala
b/backends-velox/src/main/scala/org/apache/gluten/extension/FlushableHashAggregateRule.scala
index 9cfdbd67b9..d5c1292fd1 100644
---
a/backends-velox/src/main/scala/org/apache/gluten/extension/FlushableHashAggregateRule.scala
+++
b/backends-velox/src/main/scala/org/apache/gluten/extension/FlushableHashAggregateRule.scala
@@ -22,13 +22,9 @@ import org.apache.gluten.execution._
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.catalyst.expressions.aggregate._
import org.apache.spark.sql.catalyst.rules.Rule
-import org.apache.spark.sql.catalyst.trees.TreePattern.EXCHANGE
import org.apache.spark.sql.execution.SparkPlan
-import org.apache.spark.sql.execution.exchange.ShuffleExchangeLike
import org.apache.spark.sql.types.{DataType, DoubleType, FloatType}
-import scala.collection.mutable
-
/**
* To transform regular aggregation to intermediate aggregation that
internally enables
* optimizations such as flushing and abandoning.
@@ -38,15 +34,13 @@ case class FlushableHashAggregateRule(session:
SparkSession) extends Rule[SparkP
if (!VeloxConfig.get.enableVeloxFlushablePartialAggregation) {
return plan
}
- val protectedAggs = collectProtectedOneDistinctPartialMergeAggs(plan)
- plan.transformUpWithPruning(_.containsPattern(EXCHANGE)) {
- case s: ShuffleExchangeLike =>
- // If an exchange follows a hash aggregate in which all functions are
in partial mode,
- // then it's safe to convert the hash aggregate to flushable hash
aggregate.
- val out = s.withNewChildren(
- List(replaceEligibleAggregates(s.child, protectedAggs))
- )
- out
+ val protectedAggIds = collectProtectedOneDistinctPartialMergeAggIds(plan)
+ // Use top-down traversal: child rewrites can copy an aggregate with a new
plan ID.
+ plan.transformDown {
+ case agg: RegularHashAggregateExecTransformer if isEligible(agg,
protectedAggIds) =>
+ toFlushableAgg(agg)
+ case agg: SortHashAggregateExecTransformer if isEligible(agg,
protectedAggIds) =>
+ toFlushableAgg(agg)
}
}
@@ -79,74 +73,30 @@ case class FlushableHashAggregateRule(session:
SparkSession) extends Rule[SparkP
}
/**
- * Walks the plan downward, applying func to each
RegularHashAggregateExecTransformer or
- * SortHashAggregateExecTransformer that is eligible for flushable
conversion. An aggregate is
- * eligible when all expressions are Partial/PartialMerge, it is not the
final stage of a
- * grouping-only aggregate, it is not the protected PartialMerge aggregate
directly below a
- * distinct-partial aggregate, and no aggregate function disallows flushing.
+ * An aggregate is eligible when all expressions are Partial/PartialMerge,
it is not the final
+ * stage of a grouping-only aggregate, it is not the protected PartialMerge
aggregate directly
+ * below a distinct-partial aggregate, and no aggregate function disallows
flushing.
*/
- private def replaceEligibleAggregates(
- plan: SparkPlan,
- protectedAggs: mutable.Map[Int, HashAggregateExecTransformer]):
SparkPlan = {
- def toFlushableAgg(agg: HashAggregateExecTransformer):
FlushableHashAggregateExecTransformer = {
- FlushableHashAggregateExecTransformer(
- agg.requiredChildDistributionExpressions,
- agg.groupingExpressions,
- agg.aggregateExpressions,
- agg.aggregateAttributes,
- agg.initialInputBufferOffset,
- agg.resultExpressions,
- agg.child
- )
- }
-
- def transformDown: SparkPlan => SparkPlan = {
- case agg: RegularHashAggregateExecTransformer if
isGroupingOnlyFinalAgg(agg) =>
- // Final stage of a grouping-only aggregate. It must fully aggregate.
Skip.
- agg
- case agg: RegularHashAggregateExecTransformer
- if !agg.aggregateExpressions.forall(p => p.mode == Partial || p.mode
== PartialMerge) =>
- // Not an intermediate agg. Skip.
- agg
- case agg: RegularHashAggregateExecTransformer
- if protectedAggs.contains(agg.id) =>
- // This is the PartialMerge aggregate directly below a
distinct-partial aggregate in
- // Spark's one-distinct pipeline. Keep it non-flushable so the
distinct step continues to
- // see globally de-duplicated (grouping + distinct) keys.
- agg
- case agg: RegularHashAggregateExecTransformer
- if aggregatesNotSupportFlush(agg.aggregateExpressions) =>
- // Aggregate uses a function that is unsafe to flush. Skip.
- agg
- case agg: RegularHashAggregateExecTransformer =>
- // All guards passed; replace with the flushable variant.
- toFlushableAgg(agg)
- case agg: SortHashAggregateExecTransformer if
isGroupingOnlyFinalAgg(agg) =>
- // See the RegularHashAggregateExecTransformer branch above.
- agg
- case agg: SortHashAggregateExecTransformer
- if !agg.aggregateExpressions.forall(p => p.mode == Partial || p.mode
== PartialMerge) =>
- // Not an intermediate agg. Skip.
- agg
- case agg: SortHashAggregateExecTransformer if
protectedAggs.contains(agg.id) =>
- // See the RegularHashAggregateExecTransformer branch above.
- agg
- case agg: SortHashAggregateExecTransformer
- if aggregatesNotSupportFlush(agg.aggregateExpressions) =>
- // Aggregate uses a function that is unsafe to flush. Skip.
- agg
- case agg: SortHashAggregateExecTransformer =>
- // All guards passed; replace with the flushable variant.
- toFlushableAgg(agg)
- case exchange: ShuffleExchangeLike =>
- // Stop at the next exchange. This rule is applied from an exchange
boundary and should not
- // continue rewriting into a different shuffle region.
- exchange
- case other => other.withNewChildren(other.children.map(transformDown))
- }
+ private def isEligible(
+ agg: HashAggregateExecTransformer,
+ protectedAggIds: Set[Int]): Boolean = {
+ !isGroupingOnlyFinalAgg(agg) &&
+ agg.aggregateExpressions.forall(p => p.mode == Partial || p.mode ==
PartialMerge) &&
+ !protectedAggIds.contains(agg.id) &&
+ !aggregatesNotSupportFlush(agg.aggregateExpressions)
+ }
- val out = transformDown(plan)
- out
+ private def toFlushableAgg(agg: HashAggregateExecTransformer)
+ : FlushableHashAggregateExecTransformer = {
+ FlushableHashAggregateExecTransformer(
+ agg.requiredChildDistributionExpressions,
+ agg.groupingExpressions,
+ agg.aggregateExpressions,
+ agg.aggregateAttributes,
+ agg.initialInputBufferOffset,
+ agg.resultExpressions,
+ agg.child
+ )
}
/**
@@ -169,17 +119,16 @@ case class FlushableHashAggregateRule(session:
SparkSession) extends Rule[SparkP
* flushes, duplicate `(k, v)` keys may be reintroduced within one partition
and the distinct
* aggregation pipeline would no longer see the shape Spark planned for.
*/
- private def collectProtectedOneDistinctPartialMergeAggs(
- plan: SparkPlan): mutable.Map[Int, HashAggregateExecTransformer] = {
- val protectedAggs = mutable.HashMap.empty[Int,
HashAggregateExecTransformer]
+ private def collectProtectedOneDistinctPartialMergeAggIds(plan: SparkPlan):
Set[Int] = {
+ val protectedAggIds = Set.newBuilder[Int]
plan.foreach {
case agg: HashAggregateExecTransformer =>
findProtectedPartialMergeAgg(agg).foreach {
- protectedAgg => protectedAggs.put(protectedAgg.id, protectedAgg)
+ protectedAgg => protectedAggIds += protectedAgg.id
}
case _ =>
}
- protectedAggs
+ protectedAggIds.result()
}
/** If this aggregate is the distinct-partial stage, return its child
PartialMerge aggregate. */
diff --git
a/backends-velox/src/test/scala/org/apache/gluten/execution/VeloxAggregateFunctionsSuite.scala
b/backends-velox/src/test/scala/org/apache/gluten/execution/VeloxAggregateFunctionsSuite.scala
index 14d4b72bc0..20d2cb04f4 100644
---
a/backends-velox/src/test/scala/org/apache/gluten/execution/VeloxAggregateFunctionsSuite.scala
+++
b/backends-velox/src/test/scala/org/apache/gluten/execution/VeloxAggregateFunctionsSuite.scala
@@ -22,6 +22,7 @@ import
org.apache.gluten.extension.columnar.validator.FallbackInjects
import org.apache.spark.SparkConf
import org.apache.spark.sql.catalyst.expressions.aggregate.{Final, Partial}
import org.apache.spark.sql.execution.aggregate.BaseAggregateExec
+import org.apache.spark.sql.execution.exchange.ShuffleExchangeLike
import org.apache.spark.sql.internal.SQLConf
import org.apache.spark.sql.types._
@@ -1201,11 +1202,19 @@ abstract class VeloxAggregateFunctionsSuite extends
VeloxWholeStageTransformerSu
) {
df =>
{
- assert(
- getExecutedPlan(df).count(
- plan => {
- plan.isInstanceOf[SortHashAggregateExecTransformer]
- }) == 2)
+ val executedPlan = getExecutedPlan(df)
+ val sortHashCount =
+
executedPlan.count(_.isInstanceOf[SortHashAggregateExecTransformer])
+ val flushableCount =
+
executedPlan.count(_.isInstanceOf[FlushableHashAggregateExecTransformer])
+ assert(sortHashCount + flushableCount == 2)
+ if (VeloxConfig.get.enableVeloxFlushablePartialAggregation) {
+ assert(sortHashCount == 1)
+ assert(flushableCount == 1)
+ } else {
+ assert(sortHashCount == 2)
+ assert(flushableCount == 0)
+ }
}
}
}
@@ -1257,6 +1266,23 @@ class VeloxAggregateFunctionsFlushSuite extends
VeloxAggregateFunctionsSuite {
}
}
+ test("flushable aggregate rule - single-partition partial aggregate") {
+ withSQLConf(SQLConf.ADAPTIVE_EXECUTION_ENABLED.key -> "false") {
+ withTempView("single_partition") {
+ spark
+ .range(0, 10, 1, 1)
+ .selectExpr("id % 2 as k")
+ .createOrReplaceTempView("single_partition")
+ runQueryAndCompare("select k, count(*) from single_partition group by
k") {
+ df =>
+ val executedPlan = getExecutedPlan(df)
+ assert(!executedPlan.exists(_.isInstanceOf[ShuffleExchangeLike]))
+
assert(executedPlan.exists(_.isInstanceOf[FlushableHashAggregateExecTransformer]))
+ }
+ }
+ }
+ }
+
test("flushable aggregate rule - count distinct keeps partial merge
regular") {
withSQLConf(
SQLConf.ADAPTIVE_EXECUTION_ENABLED.key -> "false",
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max.sf100/explain.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max.sf100/explain.txt
index 940ad005ec..64ade6b2f7 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max.sf100/explain.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max.sf100/explain.txt
@@ -2,7 +2,7 @@
VeloxColumnarToRow (14)
+- ^ ProjectExecTransformer (12)
+- ^ RegularHashAggregateExecTransformer (11)
- +- ^ RegularHashAggregateExecTransformer (10)
+ +- ^ FlushableHashAggregateExecTransformer (10)
+- ^ RegularHashAggregateExecTransformer (9)
+- ^ InputIteratorTransformer (8)
+- ColumnarExchange (6)
@@ -53,7 +53,7 @@ Functions [11]: [merge_count(1),
merge_count(ss_sold_date_sk#9), merge_max(ss_so
Aggregate Attributes [11]: [count(1)#10, count(ss_sold_date_sk#9)#11,
max(ss_sold_date_sk#9)#12, max(ss_sold_time_sk#1)#13, max(ss_item_sk#2)#14,
max(ss_customer_sk#3)#15, max(ss_cdemo_sk#4)#16, max(ss_hdemo_sk#5)#17,
max(ss_addr_sk#6)#18, max(ss_store_sk#7)#19, max(ss_promo_sk#8)#20]
Results [12]: [ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25,
max#26, max#27, max#28, max#29, max#30, max#31]
-(10) RegularHashAggregateExecTransformer
+(10) FlushableHashAggregateExecTransformer
Input [12]: [ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25,
max#26, max#27, max#28, max#29, max#30, max#31]
Keys: []
Functions [12]: [merge_count(1), merge_count(ss_sold_date_sk#9),
merge_max(ss_sold_date_sk#9), merge_max(ss_sold_time_sk#1),
merge_max(ss_item_sk#2), merge_max(ss_customer_sk#3), merge_max(ss_cdemo_sk#4),
merge_max(ss_hdemo_sk#5), merge_max(ss_addr_sk#6), merge_max(ss_store_sk#7),
merge_max(ss_promo_sk#8), partial_count(distinct ss_sold_date_sk#9)]
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max.sf100/simplified.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max.sf100/simplified.txt
index ac76610ebf..6d8b04fdf9 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max.sf100/simplified.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max.sf100/simplified.txt
@@ -2,7 +2,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (2)
ProjectExecTransformer
[count(1),count(ss_sold_date_sk),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk)]
RegularHashAggregateExecTransformer
[count,count,max,max,max,max,max,max,max,max,max,count]
[count(1),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk),count(ss_sold_date_sk),count,count,max,max,max,max,max,max,max,max,max,count]
- RegularHashAggregateExecTransformer [ss_sold_date_sk]
[count(1),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk),count(ss_sold_date_sk),count,count,max,max,max,max,max,max,max,max,max,count,count,count,max,max,max,max,max,max,max,max,max,count]
+ FlushableHashAggregateExecTransformer [ss_sold_date_sk]
[count(1),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk),count(ss_sold_date_sk),count,count,max,max,max,max,max,max,max,max,max,count,count,count,max,max,max,max,max,max,max,max,max,count]
RegularHashAggregateExecTransformer [ss_sold_date_sk]
[count(1),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk),count,count,max,max,max,max,max,max,max,max,max,count,count,max,max,max,max,max,max,max,max,max]
InputIteratorTransformer
InputAdapter
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max/explain.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max/explain.txt
index 940ad005ec..64ade6b2f7 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max/explain.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max/explain.txt
@@ -2,7 +2,7 @@
VeloxColumnarToRow (14)
+- ^ ProjectExecTransformer (12)
+- ^ RegularHashAggregateExecTransformer (11)
- +- ^ RegularHashAggregateExecTransformer (10)
+ +- ^ FlushableHashAggregateExecTransformer (10)
+- ^ RegularHashAggregateExecTransformer (9)
+- ^ InputIteratorTransformer (8)
+- ColumnarExchange (6)
@@ -53,7 +53,7 @@ Functions [11]: [merge_count(1),
merge_count(ss_sold_date_sk#9), merge_max(ss_so
Aggregate Attributes [11]: [count(1)#10, count(ss_sold_date_sk#9)#11,
max(ss_sold_date_sk#9)#12, max(ss_sold_time_sk#1)#13, max(ss_item_sk#2)#14,
max(ss_customer_sk#3)#15, max(ss_cdemo_sk#4)#16, max(ss_hdemo_sk#5)#17,
max(ss_addr_sk#6)#18, max(ss_store_sk#7)#19, max(ss_promo_sk#8)#20]
Results [12]: [ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25,
max#26, max#27, max#28, max#29, max#30, max#31]
-(10) RegularHashAggregateExecTransformer
+(10) FlushableHashAggregateExecTransformer
Input [12]: [ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25,
max#26, max#27, max#28, max#29, max#30, max#31]
Keys: []
Functions [12]: [merge_count(1), merge_count(ss_sold_date_sk#9),
merge_max(ss_sold_date_sk#9), merge_max(ss_sold_time_sk#1),
merge_max(ss_item_sk#2), merge_max(ss_customer_sk#3), merge_max(ss_cdemo_sk#4),
merge_max(ss_hdemo_sk#5), merge_max(ss_addr_sk#6), merge_max(ss_store_sk#7),
merge_max(ss_promo_sk#8), partial_count(distinct ss_sold_date_sk#9)]
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max/simplified.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max/simplified.txt
index ac76610ebf..6d8b04fdf9 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max/simplified.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max/simplified.txt
@@ -2,7 +2,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (2)
ProjectExecTransformer
[count(1),count(ss_sold_date_sk),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk)]
RegularHashAggregateExecTransformer
[count,count,max,max,max,max,max,max,max,max,max,count]
[count(1),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk),count(ss_sold_date_sk),count,count,max,max,max,max,max,max,max,max,max,count]
- RegularHashAggregateExecTransformer [ss_sold_date_sk]
[count(1),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk),count(ss_sold_date_sk),count,count,max,max,max,max,max,max,max,max,max,count,count,count,max,max,max,max,max,max,max,max,max,count]
+ FlushableHashAggregateExecTransformer [ss_sold_date_sk]
[count(1),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk),count(ss_sold_date_sk),count,count,max,max,max,max,max,max,max,max,max,count,count,count,max,max,max,max,max,max,max,max,max,count]
RegularHashAggregateExecTransformer [ss_sold_date_sk]
[count(1),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk),count,count,max,max,max,max,max,max,max,max,max,count,count,max,max,max,max,max,max,max,max,max]
InputIteratorTransformer
InputAdapter
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16.sf100/explain.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16.sf100/explain.txt
index e61e86016c..dd98c4013f 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16.sf100/explain.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16.sf100/explain.txt
@@ -2,9 +2,9 @@
VeloxColumnarToRow (59)
+- ^ ProjectExecTransformer (57)
+- ^ RegularHashAggregateExecTransformer (56)
- +- ^ RegularHashAggregateExecTransformer (55)
+ +- ^ FlushableHashAggregateExecTransformer (55)
+- ^ RegularHashAggregateExecTransformer (54)
- +- ^ RegularHashAggregateExecTransformer (53)
+ +- ^ FlushableHashAggregateExecTransformer (53)
+- ^ ProjectExecTransformer (52)
+- ^ BroadcastHashJoinExecTransformer Inner BuildRight (51)
:- ^ ProjectExecTransformer (43)
@@ -266,7 +266,7 @@ Join condition: None
Output [3]: [cs_order_number#5, UnscaledValue(cs_ext_ship_cost#6) AS
_pre_1#26, UnscaledValue(cs_net_profit#7) AS _pre_2#27]
Input [5]: [cs_ship_date_sk#1, cs_order_number#5, cs_ext_ship_cost#6,
cs_net_profit#7, d_date_sk#24]
-(53) RegularHashAggregateExecTransformer
+(53) FlushableHashAggregateExecTransformer
Input [3]: [cs_order_number#5, _pre_1#26, _pre_2#27]
Keys [1]: [cs_order_number#5]
Functions [2]: [partial_sum(_pre_1#26), partial_sum(_pre_2#27)]
@@ -280,7 +280,7 @@ Functions [2]:
[merge_sum(UnscaledValue(cs_ext_ship_cost#6)), merge_sum(Unscaled
Aggregate Attributes [2]: [sum(UnscaledValue(cs_ext_ship_cost#6))#28,
sum(UnscaledValue(cs_net_profit#7))#29]
Results [3]: [cs_order_number#5, sum#30, sum#31]
-(55) RegularHashAggregateExecTransformer
+(55) FlushableHashAggregateExecTransformer
Input [3]: [cs_order_number#5, sum#30, sum#31]
Keys: []
Functions [3]: [merge_sum(UnscaledValue(cs_ext_ship_cost#6)),
merge_sum(UnscaledValue(cs_net_profit#7)), partial_count(distinct
cs_order_number#5)]
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16.sf100/simplified.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16.sf100/simplified.txt
index b74f007b5f..5031d13c18 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16.sf100/simplified.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16.sf100/simplified.txt
@@ -2,9 +2,9 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (13)
ProjectExecTransformer
[count(cs_order_number),sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit))]
RegularHashAggregateExecTransformer [sum,sum,count]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),count(cs_order_number),sum,sum,count]
- RegularHashAggregateExecTransformer [cs_order_number]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),count(cs_order_number),sum,sum,count,sum,sum,count]
+ FlushableHashAggregateExecTransformer [cs_order_number]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),count(cs_order_number),sum,sum,count,sum,sum,count]
RegularHashAggregateExecTransformer [cs_order_number]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum,sum,sum]
- RegularHashAggregateExecTransformer
[cs_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum,sum,sum]
+ FlushableHashAggregateExecTransformer
[cs_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum,sum,sum]
ProjectExecTransformer
[cs_order_number,cs_ext_ship_cost,cs_net_profit]
BroadcastHashJoinExecTransformer [cs_ship_date_sk,d_date_sk]
ProjectExecTransformer
[cs_ship_date_sk,cs_order_number,cs_ext_ship_cost,cs_net_profit]
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16/explain.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16/explain.txt
index 94729a3849..f5fb5924a0 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16/explain.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16/explain.txt
@@ -2,9 +2,9 @@
VeloxColumnarToRow (59)
+- ^ ProjectExecTransformer (57)
+- ^ RegularHashAggregateExecTransformer (56)
- +- ^ RegularHashAggregateExecTransformer (55)
+ +- ^ FlushableHashAggregateExecTransformer (55)
+- ^ RegularHashAggregateExecTransformer (54)
- +- ^ RegularHashAggregateExecTransformer (53)
+ +- ^ FlushableHashAggregateExecTransformer (53)
+- ^ ProjectExecTransformer (52)
+- ^ BroadcastHashJoinExecTransformer Inner BuildRight (51)
:- ^ ProjectExecTransformer (43)
@@ -266,7 +266,7 @@ Join condition: None
Output [3]: [cs_order_number#5, UnscaledValue(cs_ext_ship_cost#6) AS
_pre_1#23, UnscaledValue(cs_net_profit#7) AS _pre_2#24]
Input [5]: [cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6,
cs_net_profit#7, cc_call_center_sk#21]
-(53) RegularHashAggregateExecTransformer
+(53) FlushableHashAggregateExecTransformer
Input [3]: [cs_order_number#5, _pre_1#23, _pre_2#24]
Keys [1]: [cs_order_number#5]
Functions [2]: [partial_sum(_pre_1#23), partial_sum(_pre_2#24)]
@@ -280,7 +280,7 @@ Functions [2]:
[merge_sum(UnscaledValue(cs_ext_ship_cost#6)), merge_sum(Unscaled
Aggregate Attributes [2]: [sum(UnscaledValue(cs_ext_ship_cost#6))#25,
sum(UnscaledValue(cs_net_profit#7))#26]
Results [3]: [cs_order_number#5, sum#27, sum#28]
-(55) RegularHashAggregateExecTransformer
+(55) FlushableHashAggregateExecTransformer
Input [3]: [cs_order_number#5, sum#27, sum#28]
Keys: []
Functions [3]: [merge_sum(UnscaledValue(cs_ext_ship_cost#6)),
merge_sum(UnscaledValue(cs_net_profit#7)), partial_count(distinct
cs_order_number#5)]
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16/simplified.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16/simplified.txt
index 0b564c7d9c..4d2229cc9a 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16/simplified.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16/simplified.txt
@@ -2,9 +2,9 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (7)
ProjectExecTransformer
[count(cs_order_number),sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit))]
RegularHashAggregateExecTransformer [sum,sum,count]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),count(cs_order_number),sum,sum,count]
- RegularHashAggregateExecTransformer [cs_order_number]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),count(cs_order_number),sum,sum,count,sum,sum,count]
+ FlushableHashAggregateExecTransformer [cs_order_number]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),count(cs_order_number),sum,sum,count,sum,sum,count]
RegularHashAggregateExecTransformer [cs_order_number]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum,sum,sum]
- RegularHashAggregateExecTransformer
[cs_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum,sum,sum]
+ FlushableHashAggregateExecTransformer
[cs_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum,sum,sum]
ProjectExecTransformer
[cs_order_number,cs_ext_ship_cost,cs_net_profit]
BroadcastHashJoinExecTransformer
[cs_call_center_sk,cc_call_center_sk]
ProjectExecTransformer
[cs_call_center_sk,cs_order_number,cs_ext_ship_cost,cs_net_profit]
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28.sf100/explain.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28.sf100/explain.txt
index 01e6d6b8fa..b6af6a6146 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28.sf100/explain.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28.sf100/explain.txt
@@ -7,7 +7,7 @@ VeloxColumnarToRow (111)
: : : :- ^ VeloxBroadcastNestedLoopJoinExecTransformer Inner BuildRight
(33)
: : : : :- ^ ProjectExecTransformer (14)
: : : : : +- ^ RegularHashAggregateExecTransformer (13)
- : : : : : +- ^ RegularHashAggregateExecTransformer (12)
+ : : : : : +- ^ FlushableHashAggregateExecTransformer (12)
: : : : : +- ^ RegularHashAggregateExecTransformer (11)
: : : : : +- ^ InputIteratorTransformer (10)
: : : : : +- ColumnarExchange (8)
@@ -21,7 +21,7 @@ VeloxColumnarToRow (111)
: : : : +- ColumnarBroadcastExchange (30)
: : : : +- ^ ProjectExecTransformer (28)
: : : : +- ^ RegularHashAggregateExecTransformer (27)
- : : : : +- ^ RegularHashAggregateExecTransformer (26)
+ : : : : +- ^ FlushableHashAggregateExecTransformer (26)
: : : : +- ^ RegularHashAggregateExecTransformer (25)
: : : : +- ^ InputIteratorTransformer (24)
: : : : +- ColumnarExchange (22)
@@ -35,7 +35,7 @@ VeloxColumnarToRow (111)
: : : +- ColumnarBroadcastExchange (49)
: : : +- ^ ProjectExecTransformer (47)
: : : +- ^ RegularHashAggregateExecTransformer (46)
- : : : +- ^ RegularHashAggregateExecTransformer (45)
+ : : : +- ^ FlushableHashAggregateExecTransformer (45)
: : : +- ^ RegularHashAggregateExecTransformer (44)
: : : +- ^ InputIteratorTransformer (43)
: : : +- ColumnarExchange (41)
@@ -49,7 +49,7 @@ VeloxColumnarToRow (111)
: : +- ColumnarBroadcastExchange (68)
: : +- ^ ProjectExecTransformer (66)
: : +- ^ RegularHashAggregateExecTransformer (65)
- : : +- ^ RegularHashAggregateExecTransformer (64)
+ : : +- ^ FlushableHashAggregateExecTransformer (64)
: : +- ^ RegularHashAggregateExecTransformer (63)
: : +- ^ InputIteratorTransformer (62)
: : +- ColumnarExchange (60)
@@ -63,7 +63,7 @@ VeloxColumnarToRow (111)
: +- ColumnarBroadcastExchange (87)
: +- ^ ProjectExecTransformer (85)
: +- ^ RegularHashAggregateExecTransformer (84)
- : +- ^ RegularHashAggregateExecTransformer (83)
+ : +- ^ FlushableHashAggregateExecTransformer (83)
: +- ^ RegularHashAggregateExecTransformer (82)
: +- ^ InputIteratorTransformer (81)
: +- ColumnarExchange (79)
@@ -77,7 +77,7 @@ VeloxColumnarToRow (111)
+- ColumnarBroadcastExchange (106)
+- ^ ProjectExecTransformer (104)
+- ^ RegularHashAggregateExecTransformer (103)
- +- ^ RegularHashAggregateExecTransformer (102)
+ +- ^ FlushableHashAggregateExecTransformer (102)
+- ^ RegularHashAggregateExecTransformer (101)
+- ^ InputIteratorTransformer (100)
+- ColumnarExchange (98)
@@ -139,7 +139,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#3)),
merge_count(ss_list_p
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#3))#7,
count(ss_list_price#3)#8]
Results [4]: [ss_list_price#3, sum#9, count#10, count#11]
-(12) RegularHashAggregateExecTransformer
+(12) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#3, sum#9, count#10, count#11]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#3)),
merge_count(ss_list_price#3), partial_count(distinct ss_list_price#3)]
@@ -207,7 +207,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#20)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#20))#24,
count(ss_list_price#20)#25]
Results [4]: [ss_list_price#20, sum#26, count#27, count#28]
-(26) RegularHashAggregateExecTransformer
+(26) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#20, sum#26, count#27, count#28]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#20)),
merge_count(ss_list_price#20), partial_count(distinct ss_list_price#20)]
@@ -293,7 +293,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#37)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#37))#41,
count(ss_list_price#37)#42]
Results [4]: [ss_list_price#37, sum#43, count#44, count#45]
-(45) RegularHashAggregateExecTransformer
+(45) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#37, sum#43, count#44, count#45]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#37)),
merge_count(ss_list_price#37), partial_count(distinct ss_list_price#37)]
@@ -379,7 +379,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#54)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#54))#58,
count(ss_list_price#54)#59]
Results [4]: [ss_list_price#54, sum#60, count#61, count#62]
-(64) RegularHashAggregateExecTransformer
+(64) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#54, sum#60, count#61, count#62]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#54)),
merge_count(ss_list_price#54), partial_count(distinct ss_list_price#54)]
@@ -465,7 +465,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#71)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#71))#75,
count(ss_list_price#71)#76]
Results [4]: [ss_list_price#71, sum#77, count#78, count#79]
-(83) RegularHashAggregateExecTransformer
+(83) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#71, sum#77, count#78, count#79]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#71)),
merge_count(ss_list_price#71), partial_count(distinct ss_list_price#71)]
@@ -551,7 +551,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#88)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#88))#92,
count(ss_list_price#88)#93]
Results [4]: [ss_list_price#88, sum#94, count#95, count#96]
-(102) RegularHashAggregateExecTransformer
+(102) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#88, sum#94, count#95, count#96]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#88)),
merge_count(ss_list_price#88), partial_count(distinct ss_list_price#88)]
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28.sf100/simplified.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28.sf100/simplified.txt
index dea0985c6f..301a7da3ac 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28.sf100/simplified.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28.sf100/simplified.txt
@@ -7,7 +7,7 @@ VeloxColumnarToRow
VeloxBroadcastNestedLoopJoinExecTransformer
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer [sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -25,7 +25,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (3)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer
[sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer
[ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer
[ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -43,7 +43,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (5)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer
[sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -61,7 +61,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (7)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer
[sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -79,7 +79,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (9)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer [sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -97,7 +97,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (11)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer [sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28/explain.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28/explain.txt
index 01e6d6b8fa..b6af6a6146 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28/explain.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28/explain.txt
@@ -7,7 +7,7 @@ VeloxColumnarToRow (111)
: : : :- ^ VeloxBroadcastNestedLoopJoinExecTransformer Inner BuildRight
(33)
: : : : :- ^ ProjectExecTransformer (14)
: : : : : +- ^ RegularHashAggregateExecTransformer (13)
- : : : : : +- ^ RegularHashAggregateExecTransformer (12)
+ : : : : : +- ^ FlushableHashAggregateExecTransformer (12)
: : : : : +- ^ RegularHashAggregateExecTransformer (11)
: : : : : +- ^ InputIteratorTransformer (10)
: : : : : +- ColumnarExchange (8)
@@ -21,7 +21,7 @@ VeloxColumnarToRow (111)
: : : : +- ColumnarBroadcastExchange (30)
: : : : +- ^ ProjectExecTransformer (28)
: : : : +- ^ RegularHashAggregateExecTransformer (27)
- : : : : +- ^ RegularHashAggregateExecTransformer (26)
+ : : : : +- ^ FlushableHashAggregateExecTransformer (26)
: : : : +- ^ RegularHashAggregateExecTransformer (25)
: : : : +- ^ InputIteratorTransformer (24)
: : : : +- ColumnarExchange (22)
@@ -35,7 +35,7 @@ VeloxColumnarToRow (111)
: : : +- ColumnarBroadcastExchange (49)
: : : +- ^ ProjectExecTransformer (47)
: : : +- ^ RegularHashAggregateExecTransformer (46)
- : : : +- ^ RegularHashAggregateExecTransformer (45)
+ : : : +- ^ FlushableHashAggregateExecTransformer (45)
: : : +- ^ RegularHashAggregateExecTransformer (44)
: : : +- ^ InputIteratorTransformer (43)
: : : +- ColumnarExchange (41)
@@ -49,7 +49,7 @@ VeloxColumnarToRow (111)
: : +- ColumnarBroadcastExchange (68)
: : +- ^ ProjectExecTransformer (66)
: : +- ^ RegularHashAggregateExecTransformer (65)
- : : +- ^ RegularHashAggregateExecTransformer (64)
+ : : +- ^ FlushableHashAggregateExecTransformer (64)
: : +- ^ RegularHashAggregateExecTransformer (63)
: : +- ^ InputIteratorTransformer (62)
: : +- ColumnarExchange (60)
@@ -63,7 +63,7 @@ VeloxColumnarToRow (111)
: +- ColumnarBroadcastExchange (87)
: +- ^ ProjectExecTransformer (85)
: +- ^ RegularHashAggregateExecTransformer (84)
- : +- ^ RegularHashAggregateExecTransformer (83)
+ : +- ^ FlushableHashAggregateExecTransformer (83)
: +- ^ RegularHashAggregateExecTransformer (82)
: +- ^ InputIteratorTransformer (81)
: +- ColumnarExchange (79)
@@ -77,7 +77,7 @@ VeloxColumnarToRow (111)
+- ColumnarBroadcastExchange (106)
+- ^ ProjectExecTransformer (104)
+- ^ RegularHashAggregateExecTransformer (103)
- +- ^ RegularHashAggregateExecTransformer (102)
+ +- ^ FlushableHashAggregateExecTransformer (102)
+- ^ RegularHashAggregateExecTransformer (101)
+- ^ InputIteratorTransformer (100)
+- ColumnarExchange (98)
@@ -139,7 +139,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#3)),
merge_count(ss_list_p
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#3))#7,
count(ss_list_price#3)#8]
Results [4]: [ss_list_price#3, sum#9, count#10, count#11]
-(12) RegularHashAggregateExecTransformer
+(12) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#3, sum#9, count#10, count#11]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#3)),
merge_count(ss_list_price#3), partial_count(distinct ss_list_price#3)]
@@ -207,7 +207,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#20)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#20))#24,
count(ss_list_price#20)#25]
Results [4]: [ss_list_price#20, sum#26, count#27, count#28]
-(26) RegularHashAggregateExecTransformer
+(26) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#20, sum#26, count#27, count#28]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#20)),
merge_count(ss_list_price#20), partial_count(distinct ss_list_price#20)]
@@ -293,7 +293,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#37)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#37))#41,
count(ss_list_price#37)#42]
Results [4]: [ss_list_price#37, sum#43, count#44, count#45]
-(45) RegularHashAggregateExecTransformer
+(45) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#37, sum#43, count#44, count#45]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#37)),
merge_count(ss_list_price#37), partial_count(distinct ss_list_price#37)]
@@ -379,7 +379,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#54)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#54))#58,
count(ss_list_price#54)#59]
Results [4]: [ss_list_price#54, sum#60, count#61, count#62]
-(64) RegularHashAggregateExecTransformer
+(64) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#54, sum#60, count#61, count#62]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#54)),
merge_count(ss_list_price#54), partial_count(distinct ss_list_price#54)]
@@ -465,7 +465,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#71)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#71))#75,
count(ss_list_price#71)#76]
Results [4]: [ss_list_price#71, sum#77, count#78, count#79]
-(83) RegularHashAggregateExecTransformer
+(83) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#71, sum#77, count#78, count#79]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#71)),
merge_count(ss_list_price#71), partial_count(distinct ss_list_price#71)]
@@ -551,7 +551,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#88)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#88))#92,
count(ss_list_price#88)#93]
Results [4]: [ss_list_price#88, sum#94, count#95, count#96]
-(102) RegularHashAggregateExecTransformer
+(102) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#88, sum#94, count#95, count#96]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#88)),
merge_count(ss_list_price#88), partial_count(distinct ss_list_price#88)]
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28/simplified.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28/simplified.txt
index dea0985c6f..301a7da3ac 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28/simplified.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28/simplified.txt
@@ -7,7 +7,7 @@ VeloxColumnarToRow
VeloxBroadcastNestedLoopJoinExecTransformer
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer [sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -25,7 +25,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (3)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer
[sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer
[ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer
[ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -43,7 +43,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (5)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer
[sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -61,7 +61,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (7)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer
[sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -79,7 +79,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (9)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer [sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -97,7 +97,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (11)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer [sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94.sf100/explain.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94.sf100/explain.txt
index 97f2376b03..27e0618751 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94.sf100/explain.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94.sf100/explain.txt
@@ -2,9 +2,9 @@
VeloxColumnarToRow (59)
+- ^ ProjectExecTransformer (57)
+- ^ RegularHashAggregateExecTransformer (56)
- +- ^ RegularHashAggregateExecTransformer (55)
+ +- ^ FlushableHashAggregateExecTransformer (55)
+- ^ RegularHashAggregateExecTransformer (54)
- +- ^ RegularHashAggregateExecTransformer (53)
+ +- ^ FlushableHashAggregateExecTransformer (53)
+- ^ ProjectExecTransformer (52)
+- ^ BroadcastHashJoinExecTransformer Inner BuildRight (51)
:- ^ ProjectExecTransformer (43)
@@ -266,7 +266,7 @@ Join condition: None
Output [3]: [ws_order_number#5, UnscaledValue(ws_ext_ship_cost#6) AS
_pre_1#26, UnscaledValue(ws_net_profit#7) AS _pre_2#27]
Input [5]: [ws_ship_date_sk#1, ws_order_number#5, ws_ext_ship_cost#6,
ws_net_profit#7, d_date_sk#24]
-(53) RegularHashAggregateExecTransformer
+(53) FlushableHashAggregateExecTransformer
Input [3]: [ws_order_number#5, _pre_1#26, _pre_2#27]
Keys [1]: [ws_order_number#5]
Functions [2]: [partial_sum(_pre_1#26), partial_sum(_pre_2#27)]
@@ -280,7 +280,7 @@ Functions [2]:
[merge_sum(UnscaledValue(ws_ext_ship_cost#6)), merge_sum(Unscaled
Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#6))#28,
sum(UnscaledValue(ws_net_profit#7))#29]
Results [3]: [ws_order_number#5, sum#30, sum#31]
-(55) RegularHashAggregateExecTransformer
+(55) FlushableHashAggregateExecTransformer
Input [3]: [ws_order_number#5, sum#30, sum#31]
Keys: []
Functions [3]: [merge_sum(UnscaledValue(ws_ext_ship_cost#6)),
merge_sum(UnscaledValue(ws_net_profit#7)), partial_count(distinct
ws_order_number#5)]
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94.sf100/simplified.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94.sf100/simplified.txt
index 547b6e4468..48354046aa 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94.sf100/simplified.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94.sf100/simplified.txt
@@ -2,9 +2,9 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (13)
ProjectExecTransformer
[count(ws_order_number),sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit))]
RegularHashAggregateExecTransformer [sum,sum,count]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count]
- RegularHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count,sum,sum,count]
+ FlushableHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count,sum,sum,count]
RegularHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
- RegularHashAggregateExecTransformer
[ws_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
+ FlushableHashAggregateExecTransformer
[ws_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
ProjectExecTransformer
[ws_order_number,ws_ext_ship_cost,ws_net_profit]
BroadcastHashJoinExecTransformer [ws_ship_date_sk,d_date_sk]
ProjectExecTransformer
[ws_ship_date_sk,ws_order_number,ws_ext_ship_cost,ws_net_profit]
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94/explain.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94/explain.txt
index 85b07dc84d..323d43866f 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94/explain.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94/explain.txt
@@ -2,9 +2,9 @@
VeloxColumnarToRow (59)
+- ^ ProjectExecTransformer (57)
+- ^ RegularHashAggregateExecTransformer (56)
- +- ^ RegularHashAggregateExecTransformer (55)
+ +- ^ FlushableHashAggregateExecTransformer (55)
+- ^ RegularHashAggregateExecTransformer (54)
- +- ^ RegularHashAggregateExecTransformer (53)
+ +- ^ FlushableHashAggregateExecTransformer (53)
+- ^ ProjectExecTransformer (52)
+- ^ BroadcastHashJoinExecTransformer Inner BuildRight (51)
:- ^ ProjectExecTransformer (43)
@@ -266,7 +266,7 @@ Join condition: None
Output [3]: [ws_order_number#5, UnscaledValue(ws_ext_ship_cost#6) AS
_pre_1#23, UnscaledValue(ws_net_profit#7) AS _pre_2#24]
Input [5]: [ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6,
ws_net_profit#7, web_site_sk#21]
-(53) RegularHashAggregateExecTransformer
+(53) FlushableHashAggregateExecTransformer
Input [3]: [ws_order_number#5, _pre_1#23, _pre_2#24]
Keys [1]: [ws_order_number#5]
Functions [2]: [partial_sum(_pre_1#23), partial_sum(_pre_2#24)]
@@ -280,7 +280,7 @@ Functions [2]:
[merge_sum(UnscaledValue(ws_ext_ship_cost#6)), merge_sum(Unscaled
Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#6))#25,
sum(UnscaledValue(ws_net_profit#7))#26]
Results [3]: [ws_order_number#5, sum#27, sum#28]
-(55) RegularHashAggregateExecTransformer
+(55) FlushableHashAggregateExecTransformer
Input [3]: [ws_order_number#5, sum#27, sum#28]
Keys: []
Functions [3]: [merge_sum(UnscaledValue(ws_ext_ship_cost#6)),
merge_sum(UnscaledValue(ws_net_profit#7)), partial_count(distinct
ws_order_number#5)]
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94/simplified.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94/simplified.txt
index f550d94516..d7922584c0 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94/simplified.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94/simplified.txt
@@ -2,9 +2,9 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (7)
ProjectExecTransformer
[count(ws_order_number),sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit))]
RegularHashAggregateExecTransformer [sum,sum,count]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count]
- RegularHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count,sum,sum,count]
+ FlushableHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count,sum,sum,count]
RegularHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
- RegularHashAggregateExecTransformer
[ws_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
+ FlushableHashAggregateExecTransformer
[ws_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
ProjectExecTransformer
[ws_order_number,ws_ext_ship_cost,ws_net_profit]
BroadcastHashJoinExecTransformer [ws_web_site_sk,web_site_sk]
ProjectExecTransformer
[ws_web_site_sk,ws_order_number,ws_ext_ship_cost,ws_net_profit]
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95.sf100/explain.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95.sf100/explain.txt
index e86dddc86f..1194eee5db 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95.sf100/explain.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95.sf100/explain.txt
@@ -2,9 +2,9 @@
VeloxColumnarToRow (74)
+- ^ ProjectExecTransformer (72)
+- ^ RegularHashAggregateExecTransformer (71)
- +- ^ RegularHashAggregateExecTransformer (70)
+ +- ^ FlushableHashAggregateExecTransformer (70)
+- ^ RegularHashAggregateExecTransformer (69)
- +- ^ RegularHashAggregateExecTransformer (68)
+ +- ^ FlushableHashAggregateExecTransformer (68)
+- ^ ProjectExecTransformer (67)
+- ^ BroadcastHashJoinExecTransformer Inner BuildRight (66)
:- ^ ProjectExecTransformer (58)
@@ -337,7 +337,7 @@ Join condition: None
Output [3]: [ws_order_number#4, UnscaledValue(ws_ext_ship_cost#5) AS
_pre_1#31, UnscaledValue(ws_net_profit#6) AS _pre_2#32]
Input [5]: [ws_ship_date_sk#1, ws_order_number#4, ws_ext_ship_cost#5,
ws_net_profit#6, d_date_sk#29]
-(68) RegularHashAggregateExecTransformer
+(68) FlushableHashAggregateExecTransformer
Input [3]: [ws_order_number#4, _pre_1#31, _pre_2#32]
Keys [1]: [ws_order_number#4]
Functions [2]: [partial_sum(_pre_1#31), partial_sum(_pre_2#32)]
@@ -351,7 +351,7 @@ Functions [2]:
[merge_sum(UnscaledValue(ws_ext_ship_cost#5)), merge_sum(Unscaled
Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#5))#33,
sum(UnscaledValue(ws_net_profit#6))#34]
Results [3]: [ws_order_number#4, sum#35, sum#36]
-(70) RegularHashAggregateExecTransformer
+(70) FlushableHashAggregateExecTransformer
Input [3]: [ws_order_number#4, sum#35, sum#36]
Keys: []
Functions [3]: [merge_sum(UnscaledValue(ws_ext_ship_cost#5)),
merge_sum(UnscaledValue(ws_net_profit#6)), partial_count(distinct
ws_order_number#4)]
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95.sf100/simplified.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95.sf100/simplified.txt
index b764f51091..73a700c52b 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95.sf100/simplified.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95.sf100/simplified.txt
@@ -2,9 +2,9 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (16)
ProjectExecTransformer
[count(ws_order_number),sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit))]
RegularHashAggregateExecTransformer [sum,sum,count]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count]
- RegularHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count,sum,sum,count]
+ FlushableHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count,sum,sum,count]
RegularHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
- RegularHashAggregateExecTransformer
[ws_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
+ FlushableHashAggregateExecTransformer
[ws_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
ProjectExecTransformer
[ws_order_number,ws_ext_ship_cost,ws_net_profit]
BroadcastHashJoinExecTransformer [ws_ship_date_sk,d_date_sk]
ProjectExecTransformer
[ws_ship_date_sk,ws_order_number,ws_ext_ship_cost,ws_net_profit]
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95/explain.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95/explain.txt
index 2ea15db9dd..878fffd6e9 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95/explain.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95/explain.txt
@@ -2,9 +2,9 @@
VeloxColumnarToRow (75)
+- ^ ProjectExecTransformer (73)
+- ^ RegularHashAggregateExecTransformer (72)
- +- ^ RegularHashAggregateExecTransformer (71)
+ +- ^ FlushableHashAggregateExecTransformer (71)
+- ^ RegularHashAggregateExecTransformer (70)
- +- ^ RegularHashAggregateExecTransformer (69)
+ +- ^ FlushableHashAggregateExecTransformer (69)
+- ^ ProjectExecTransformer (68)
+- ^ BroadcastHashJoinExecTransformer Inner BuildRight (67)
:- ^ ProjectExecTransformer (59)
@@ -342,7 +342,7 @@ Join condition: None
Output [3]: [ws_order_number#4, UnscaledValue(ws_ext_ship_cost#5) AS
_pre_1#28, UnscaledValue(ws_net_profit#6) AS _pre_2#29]
Input [5]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5,
ws_net_profit#6, web_site_sk#26]
-(69) RegularHashAggregateExecTransformer
+(69) FlushableHashAggregateExecTransformer
Input [3]: [ws_order_number#4, _pre_1#28, _pre_2#29]
Keys [1]: [ws_order_number#4]
Functions [2]: [partial_sum(_pre_1#28), partial_sum(_pre_2#29)]
@@ -356,7 +356,7 @@ Functions [2]:
[merge_sum(UnscaledValue(ws_ext_ship_cost#5)), merge_sum(Unscaled
Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#5))#30,
sum(UnscaledValue(ws_net_profit#6))#31]
Results [3]: [ws_order_number#4, sum#32, sum#33]
-(71) RegularHashAggregateExecTransformer
+(71) FlushableHashAggregateExecTransformer
Input [3]: [ws_order_number#4, sum#32, sum#33]
Keys: []
Functions [3]: [merge_sum(UnscaledValue(ws_ext_ship_cost#5)),
merge_sum(UnscaledValue(ws_net_profit#6)), partial_count(distinct
ws_order_number#4)]
diff --git
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95/simplified.txt
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95/simplified.txt
index 155a6f58ff..cc2b85d466 100644
---
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95/simplified.txt
+++
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95/simplified.txt
@@ -2,9 +2,9 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (10)
ProjectExecTransformer
[count(ws_order_number),sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit))]
RegularHashAggregateExecTransformer [sum,sum,count]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count]
- RegularHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count,sum,sum,count]
+ FlushableHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count,sum,sum,count]
RegularHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
- RegularHashAggregateExecTransformer
[ws_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
+ FlushableHashAggregateExecTransformer
[ws_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
ProjectExecTransformer
[ws_order_number,ws_ext_ship_cost,ws_net_profit]
BroadcastHashJoinExecTransformer [ws_web_site_sk,web_site_sk]
ProjectExecTransformer
[ws_web_site_sk,ws_order_number,ws_ext_ship_cost,ws_net_profit]
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max.sf100/explain.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max.sf100/explain.txt
index 940ad005ec..64ade6b2f7 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max.sf100/explain.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max.sf100/explain.txt
@@ -2,7 +2,7 @@
VeloxColumnarToRow (14)
+- ^ ProjectExecTransformer (12)
+- ^ RegularHashAggregateExecTransformer (11)
- +- ^ RegularHashAggregateExecTransformer (10)
+ +- ^ FlushableHashAggregateExecTransformer (10)
+- ^ RegularHashAggregateExecTransformer (9)
+- ^ InputIteratorTransformer (8)
+- ColumnarExchange (6)
@@ -53,7 +53,7 @@ Functions [11]: [merge_count(1),
merge_count(ss_sold_date_sk#9), merge_max(ss_so
Aggregate Attributes [11]: [count(1)#10, count(ss_sold_date_sk#9)#11,
max(ss_sold_date_sk#9)#12, max(ss_sold_time_sk#1)#13, max(ss_item_sk#2)#14,
max(ss_customer_sk#3)#15, max(ss_cdemo_sk#4)#16, max(ss_hdemo_sk#5)#17,
max(ss_addr_sk#6)#18, max(ss_store_sk#7)#19, max(ss_promo_sk#8)#20]
Results [12]: [ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25,
max#26, max#27, max#28, max#29, max#30, max#31]
-(10) RegularHashAggregateExecTransformer
+(10) FlushableHashAggregateExecTransformer
Input [12]: [ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25,
max#26, max#27, max#28, max#29, max#30, max#31]
Keys: []
Functions [12]: [merge_count(1), merge_count(ss_sold_date_sk#9),
merge_max(ss_sold_date_sk#9), merge_max(ss_sold_time_sk#1),
merge_max(ss_item_sk#2), merge_max(ss_customer_sk#3), merge_max(ss_cdemo_sk#4),
merge_max(ss_hdemo_sk#5), merge_max(ss_addr_sk#6), merge_max(ss_store_sk#7),
merge_max(ss_promo_sk#8), partial_count(distinct ss_sold_date_sk#9)]
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max.sf100/simplified.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max.sf100/simplified.txt
index ac76610ebf..6d8b04fdf9 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max.sf100/simplified.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max.sf100/simplified.txt
@@ -2,7 +2,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (2)
ProjectExecTransformer
[count(1),count(ss_sold_date_sk),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk)]
RegularHashAggregateExecTransformer
[count,count,max,max,max,max,max,max,max,max,max,count]
[count(1),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk),count(ss_sold_date_sk),count,count,max,max,max,max,max,max,max,max,max,count]
- RegularHashAggregateExecTransformer [ss_sold_date_sk]
[count(1),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk),count(ss_sold_date_sk),count,count,max,max,max,max,max,max,max,max,max,count,count,count,max,max,max,max,max,max,max,max,max,count]
+ FlushableHashAggregateExecTransformer [ss_sold_date_sk]
[count(1),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk),count(ss_sold_date_sk),count,count,max,max,max,max,max,max,max,max,max,count,count,count,max,max,max,max,max,max,max,max,max,count]
RegularHashAggregateExecTransformer [ss_sold_date_sk]
[count(1),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk),count,count,max,max,max,max,max,max,max,max,max,count,count,max,max,max,max,max,max,max,max,max]
InputIteratorTransformer
InputAdapter
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max/explain.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max/explain.txt
index 940ad005ec..64ade6b2f7 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max/explain.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max/explain.txt
@@ -2,7 +2,7 @@
VeloxColumnarToRow (14)
+- ^ ProjectExecTransformer (12)
+- ^ RegularHashAggregateExecTransformer (11)
- +- ^ RegularHashAggregateExecTransformer (10)
+ +- ^ FlushableHashAggregateExecTransformer (10)
+- ^ RegularHashAggregateExecTransformer (9)
+- ^ InputIteratorTransformer (8)
+- ColumnarExchange (6)
@@ -53,7 +53,7 @@ Functions [11]: [merge_count(1),
merge_count(ss_sold_date_sk#9), merge_max(ss_so
Aggregate Attributes [11]: [count(1)#10, count(ss_sold_date_sk#9)#11,
max(ss_sold_date_sk#9)#12, max(ss_sold_time_sk#1)#13, max(ss_item_sk#2)#14,
max(ss_customer_sk#3)#15, max(ss_cdemo_sk#4)#16, max(ss_hdemo_sk#5)#17,
max(ss_addr_sk#6)#18, max(ss_store_sk#7)#19, max(ss_promo_sk#8)#20]
Results [12]: [ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25,
max#26, max#27, max#28, max#29, max#30, max#31]
-(10) RegularHashAggregateExecTransformer
+(10) FlushableHashAggregateExecTransformer
Input [12]: [ss_sold_date_sk#9, count#21, count#22, max#23, max#24, max#25,
max#26, max#27, max#28, max#29, max#30, max#31]
Keys: []
Functions [12]: [merge_count(1), merge_count(ss_sold_date_sk#9),
merge_max(ss_sold_date_sk#9), merge_max(ss_sold_time_sk#1),
merge_max(ss_item_sk#2), merge_max(ss_customer_sk#3), merge_max(ss_cdemo_sk#4),
merge_max(ss_hdemo_sk#5), merge_max(ss_addr_sk#6), merge_max(ss_store_sk#7),
merge_max(ss_promo_sk#8), partial_count(distinct ss_sold_date_sk#9)]
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max/simplified.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max/simplified.txt
index ac76610ebf..6d8b04fdf9 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max/simplified.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-modified/ss_max/simplified.txt
@@ -2,7 +2,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (2)
ProjectExecTransformer
[count(1),count(ss_sold_date_sk),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk)]
RegularHashAggregateExecTransformer
[count,count,max,max,max,max,max,max,max,max,max,count]
[count(1),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk),count(ss_sold_date_sk),count,count,max,max,max,max,max,max,max,max,max,count]
- RegularHashAggregateExecTransformer [ss_sold_date_sk]
[count(1),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk),count(ss_sold_date_sk),count,count,max,max,max,max,max,max,max,max,max,count,count,count,max,max,max,max,max,max,max,max,max,count]
+ FlushableHashAggregateExecTransformer [ss_sold_date_sk]
[count(1),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk),count(ss_sold_date_sk),count,count,max,max,max,max,max,max,max,max,max,count,count,count,max,max,max,max,max,max,max,max,max,count]
RegularHashAggregateExecTransformer [ss_sold_date_sk]
[count(1),count(ss_sold_date_sk),max(ss_sold_date_sk),max(ss_sold_time_sk),max(ss_item_sk),max(ss_customer_sk),max(ss_cdemo_sk),max(ss_hdemo_sk),max(ss_addr_sk),max(ss_store_sk),max(ss_promo_sk),count,count,max,max,max,max,max,max,max,max,max,count,count,max,max,max,max,max,max,max,max,max]
InputIteratorTransformer
InputAdapter
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16.sf100/explain.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16.sf100/explain.txt
index e61e86016c..dd98c4013f 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16.sf100/explain.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16.sf100/explain.txt
@@ -2,9 +2,9 @@
VeloxColumnarToRow (59)
+- ^ ProjectExecTransformer (57)
+- ^ RegularHashAggregateExecTransformer (56)
- +- ^ RegularHashAggregateExecTransformer (55)
+ +- ^ FlushableHashAggregateExecTransformer (55)
+- ^ RegularHashAggregateExecTransformer (54)
- +- ^ RegularHashAggregateExecTransformer (53)
+ +- ^ FlushableHashAggregateExecTransformer (53)
+- ^ ProjectExecTransformer (52)
+- ^ BroadcastHashJoinExecTransformer Inner BuildRight (51)
:- ^ ProjectExecTransformer (43)
@@ -266,7 +266,7 @@ Join condition: None
Output [3]: [cs_order_number#5, UnscaledValue(cs_ext_ship_cost#6) AS
_pre_1#26, UnscaledValue(cs_net_profit#7) AS _pre_2#27]
Input [5]: [cs_ship_date_sk#1, cs_order_number#5, cs_ext_ship_cost#6,
cs_net_profit#7, d_date_sk#24]
-(53) RegularHashAggregateExecTransformer
+(53) FlushableHashAggregateExecTransformer
Input [3]: [cs_order_number#5, _pre_1#26, _pre_2#27]
Keys [1]: [cs_order_number#5]
Functions [2]: [partial_sum(_pre_1#26), partial_sum(_pre_2#27)]
@@ -280,7 +280,7 @@ Functions [2]:
[merge_sum(UnscaledValue(cs_ext_ship_cost#6)), merge_sum(Unscaled
Aggregate Attributes [2]: [sum(UnscaledValue(cs_ext_ship_cost#6))#28,
sum(UnscaledValue(cs_net_profit#7))#29]
Results [3]: [cs_order_number#5, sum#30, sum#31]
-(55) RegularHashAggregateExecTransformer
+(55) FlushableHashAggregateExecTransformer
Input [3]: [cs_order_number#5, sum#30, sum#31]
Keys: []
Functions [3]: [merge_sum(UnscaledValue(cs_ext_ship_cost#6)),
merge_sum(UnscaledValue(cs_net_profit#7)), partial_count(distinct
cs_order_number#5)]
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16.sf100/simplified.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16.sf100/simplified.txt
index b74f007b5f..5031d13c18 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16.sf100/simplified.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16.sf100/simplified.txt
@@ -2,9 +2,9 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (13)
ProjectExecTransformer
[count(cs_order_number),sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit))]
RegularHashAggregateExecTransformer [sum,sum,count]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),count(cs_order_number),sum,sum,count]
- RegularHashAggregateExecTransformer [cs_order_number]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),count(cs_order_number),sum,sum,count,sum,sum,count]
+ FlushableHashAggregateExecTransformer [cs_order_number]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),count(cs_order_number),sum,sum,count,sum,sum,count]
RegularHashAggregateExecTransformer [cs_order_number]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum,sum,sum]
- RegularHashAggregateExecTransformer
[cs_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum,sum,sum]
+ FlushableHashAggregateExecTransformer
[cs_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum,sum,sum]
ProjectExecTransformer
[cs_order_number,cs_ext_ship_cost,cs_net_profit]
BroadcastHashJoinExecTransformer [cs_ship_date_sk,d_date_sk]
ProjectExecTransformer
[cs_ship_date_sk,cs_order_number,cs_ext_ship_cost,cs_net_profit]
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16/explain.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16/explain.txt
index 94729a3849..f5fb5924a0 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16/explain.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16/explain.txt
@@ -2,9 +2,9 @@
VeloxColumnarToRow (59)
+- ^ ProjectExecTransformer (57)
+- ^ RegularHashAggregateExecTransformer (56)
- +- ^ RegularHashAggregateExecTransformer (55)
+ +- ^ FlushableHashAggregateExecTransformer (55)
+- ^ RegularHashAggregateExecTransformer (54)
- +- ^ RegularHashAggregateExecTransformer (53)
+ +- ^ FlushableHashAggregateExecTransformer (53)
+- ^ ProjectExecTransformer (52)
+- ^ BroadcastHashJoinExecTransformer Inner BuildRight (51)
:- ^ ProjectExecTransformer (43)
@@ -266,7 +266,7 @@ Join condition: None
Output [3]: [cs_order_number#5, UnscaledValue(cs_ext_ship_cost#6) AS
_pre_1#23, UnscaledValue(cs_net_profit#7) AS _pre_2#24]
Input [5]: [cs_call_center_sk#3, cs_order_number#5, cs_ext_ship_cost#6,
cs_net_profit#7, cc_call_center_sk#21]
-(53) RegularHashAggregateExecTransformer
+(53) FlushableHashAggregateExecTransformer
Input [3]: [cs_order_number#5, _pre_1#23, _pre_2#24]
Keys [1]: [cs_order_number#5]
Functions [2]: [partial_sum(_pre_1#23), partial_sum(_pre_2#24)]
@@ -280,7 +280,7 @@ Functions [2]:
[merge_sum(UnscaledValue(cs_ext_ship_cost#6)), merge_sum(Unscaled
Aggregate Attributes [2]: [sum(UnscaledValue(cs_ext_ship_cost#6))#25,
sum(UnscaledValue(cs_net_profit#7))#26]
Results [3]: [cs_order_number#5, sum#27, sum#28]
-(55) RegularHashAggregateExecTransformer
+(55) FlushableHashAggregateExecTransformer
Input [3]: [cs_order_number#5, sum#27, sum#28]
Keys: []
Functions [3]: [merge_sum(UnscaledValue(cs_ext_ship_cost#6)),
merge_sum(UnscaledValue(cs_net_profit#7)), partial_count(distinct
cs_order_number#5)]
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16/simplified.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16/simplified.txt
index 0b564c7d9c..4d2229cc9a 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16/simplified.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q16/simplified.txt
@@ -2,9 +2,9 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (7)
ProjectExecTransformer
[count(cs_order_number),sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit))]
RegularHashAggregateExecTransformer [sum,sum,count]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),count(cs_order_number),sum,sum,count]
- RegularHashAggregateExecTransformer [cs_order_number]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),count(cs_order_number),sum,sum,count,sum,sum,count]
+ FlushableHashAggregateExecTransformer [cs_order_number]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),count(cs_order_number),sum,sum,count,sum,sum,count]
RegularHashAggregateExecTransformer [cs_order_number]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum,sum,sum]
- RegularHashAggregateExecTransformer
[cs_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum,sum,sum]
+ FlushableHashAggregateExecTransformer
[cs_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(cs_ext_ship_cost)),sum(UnscaledValue(cs_net_profit)),sum,sum,sum,sum]
ProjectExecTransformer
[cs_order_number,cs_ext_ship_cost,cs_net_profit]
BroadcastHashJoinExecTransformer
[cs_call_center_sk,cc_call_center_sk]
ProjectExecTransformer
[cs_call_center_sk,cs_order_number,cs_ext_ship_cost,cs_net_profit]
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28.sf100/explain.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28.sf100/explain.txt
index 01e6d6b8fa..b6af6a6146 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28.sf100/explain.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28.sf100/explain.txt
@@ -7,7 +7,7 @@ VeloxColumnarToRow (111)
: : : :- ^ VeloxBroadcastNestedLoopJoinExecTransformer Inner BuildRight
(33)
: : : : :- ^ ProjectExecTransformer (14)
: : : : : +- ^ RegularHashAggregateExecTransformer (13)
- : : : : : +- ^ RegularHashAggregateExecTransformer (12)
+ : : : : : +- ^ FlushableHashAggregateExecTransformer (12)
: : : : : +- ^ RegularHashAggregateExecTransformer (11)
: : : : : +- ^ InputIteratorTransformer (10)
: : : : : +- ColumnarExchange (8)
@@ -21,7 +21,7 @@ VeloxColumnarToRow (111)
: : : : +- ColumnarBroadcastExchange (30)
: : : : +- ^ ProjectExecTransformer (28)
: : : : +- ^ RegularHashAggregateExecTransformer (27)
- : : : : +- ^ RegularHashAggregateExecTransformer (26)
+ : : : : +- ^ FlushableHashAggregateExecTransformer (26)
: : : : +- ^ RegularHashAggregateExecTransformer (25)
: : : : +- ^ InputIteratorTransformer (24)
: : : : +- ColumnarExchange (22)
@@ -35,7 +35,7 @@ VeloxColumnarToRow (111)
: : : +- ColumnarBroadcastExchange (49)
: : : +- ^ ProjectExecTransformer (47)
: : : +- ^ RegularHashAggregateExecTransformer (46)
- : : : +- ^ RegularHashAggregateExecTransformer (45)
+ : : : +- ^ FlushableHashAggregateExecTransformer (45)
: : : +- ^ RegularHashAggregateExecTransformer (44)
: : : +- ^ InputIteratorTransformer (43)
: : : +- ColumnarExchange (41)
@@ -49,7 +49,7 @@ VeloxColumnarToRow (111)
: : +- ColumnarBroadcastExchange (68)
: : +- ^ ProjectExecTransformer (66)
: : +- ^ RegularHashAggregateExecTransformer (65)
- : : +- ^ RegularHashAggregateExecTransformer (64)
+ : : +- ^ FlushableHashAggregateExecTransformer (64)
: : +- ^ RegularHashAggregateExecTransformer (63)
: : +- ^ InputIteratorTransformer (62)
: : +- ColumnarExchange (60)
@@ -63,7 +63,7 @@ VeloxColumnarToRow (111)
: +- ColumnarBroadcastExchange (87)
: +- ^ ProjectExecTransformer (85)
: +- ^ RegularHashAggregateExecTransformer (84)
- : +- ^ RegularHashAggregateExecTransformer (83)
+ : +- ^ FlushableHashAggregateExecTransformer (83)
: +- ^ RegularHashAggregateExecTransformer (82)
: +- ^ InputIteratorTransformer (81)
: +- ColumnarExchange (79)
@@ -77,7 +77,7 @@ VeloxColumnarToRow (111)
+- ColumnarBroadcastExchange (106)
+- ^ ProjectExecTransformer (104)
+- ^ RegularHashAggregateExecTransformer (103)
- +- ^ RegularHashAggregateExecTransformer (102)
+ +- ^ FlushableHashAggregateExecTransformer (102)
+- ^ RegularHashAggregateExecTransformer (101)
+- ^ InputIteratorTransformer (100)
+- ColumnarExchange (98)
@@ -139,7 +139,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#3)),
merge_count(ss_list_p
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#3))#7,
count(ss_list_price#3)#8]
Results [4]: [ss_list_price#3, sum#9, count#10, count#11]
-(12) RegularHashAggregateExecTransformer
+(12) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#3, sum#9, count#10, count#11]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#3)),
merge_count(ss_list_price#3), partial_count(distinct ss_list_price#3)]
@@ -207,7 +207,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#20)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#20))#24,
count(ss_list_price#20)#25]
Results [4]: [ss_list_price#20, sum#26, count#27, count#28]
-(26) RegularHashAggregateExecTransformer
+(26) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#20, sum#26, count#27, count#28]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#20)),
merge_count(ss_list_price#20), partial_count(distinct ss_list_price#20)]
@@ -293,7 +293,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#37)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#37))#41,
count(ss_list_price#37)#42]
Results [4]: [ss_list_price#37, sum#43, count#44, count#45]
-(45) RegularHashAggregateExecTransformer
+(45) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#37, sum#43, count#44, count#45]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#37)),
merge_count(ss_list_price#37), partial_count(distinct ss_list_price#37)]
@@ -379,7 +379,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#54)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#54))#58,
count(ss_list_price#54)#59]
Results [4]: [ss_list_price#54, sum#60, count#61, count#62]
-(64) RegularHashAggregateExecTransformer
+(64) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#54, sum#60, count#61, count#62]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#54)),
merge_count(ss_list_price#54), partial_count(distinct ss_list_price#54)]
@@ -465,7 +465,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#71)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#71))#75,
count(ss_list_price#71)#76]
Results [4]: [ss_list_price#71, sum#77, count#78, count#79]
-(83) RegularHashAggregateExecTransformer
+(83) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#71, sum#77, count#78, count#79]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#71)),
merge_count(ss_list_price#71), partial_count(distinct ss_list_price#71)]
@@ -551,7 +551,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#88)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#88))#92,
count(ss_list_price#88)#93]
Results [4]: [ss_list_price#88, sum#94, count#95, count#96]
-(102) RegularHashAggregateExecTransformer
+(102) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#88, sum#94, count#95, count#96]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#88)),
merge_count(ss_list_price#88), partial_count(distinct ss_list_price#88)]
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28.sf100/simplified.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28.sf100/simplified.txt
index dea0985c6f..301a7da3ac 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28.sf100/simplified.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28.sf100/simplified.txt
@@ -7,7 +7,7 @@ VeloxColumnarToRow
VeloxBroadcastNestedLoopJoinExecTransformer
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer [sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -25,7 +25,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (3)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer
[sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer
[ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer
[ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -43,7 +43,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (5)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer
[sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -61,7 +61,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (7)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer
[sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -79,7 +79,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (9)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer [sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -97,7 +97,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (11)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer [sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28/explain.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28/explain.txt
index 01e6d6b8fa..b6af6a6146 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28/explain.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28/explain.txt
@@ -7,7 +7,7 @@ VeloxColumnarToRow (111)
: : : :- ^ VeloxBroadcastNestedLoopJoinExecTransformer Inner BuildRight
(33)
: : : : :- ^ ProjectExecTransformer (14)
: : : : : +- ^ RegularHashAggregateExecTransformer (13)
- : : : : : +- ^ RegularHashAggregateExecTransformer (12)
+ : : : : : +- ^ FlushableHashAggregateExecTransformer (12)
: : : : : +- ^ RegularHashAggregateExecTransformer (11)
: : : : : +- ^ InputIteratorTransformer (10)
: : : : : +- ColumnarExchange (8)
@@ -21,7 +21,7 @@ VeloxColumnarToRow (111)
: : : : +- ColumnarBroadcastExchange (30)
: : : : +- ^ ProjectExecTransformer (28)
: : : : +- ^ RegularHashAggregateExecTransformer (27)
- : : : : +- ^ RegularHashAggregateExecTransformer (26)
+ : : : : +- ^ FlushableHashAggregateExecTransformer (26)
: : : : +- ^ RegularHashAggregateExecTransformer (25)
: : : : +- ^ InputIteratorTransformer (24)
: : : : +- ColumnarExchange (22)
@@ -35,7 +35,7 @@ VeloxColumnarToRow (111)
: : : +- ColumnarBroadcastExchange (49)
: : : +- ^ ProjectExecTransformer (47)
: : : +- ^ RegularHashAggregateExecTransformer (46)
- : : : +- ^ RegularHashAggregateExecTransformer (45)
+ : : : +- ^ FlushableHashAggregateExecTransformer (45)
: : : +- ^ RegularHashAggregateExecTransformer (44)
: : : +- ^ InputIteratorTransformer (43)
: : : +- ColumnarExchange (41)
@@ -49,7 +49,7 @@ VeloxColumnarToRow (111)
: : +- ColumnarBroadcastExchange (68)
: : +- ^ ProjectExecTransformer (66)
: : +- ^ RegularHashAggregateExecTransformer (65)
- : : +- ^ RegularHashAggregateExecTransformer (64)
+ : : +- ^ FlushableHashAggregateExecTransformer (64)
: : +- ^ RegularHashAggregateExecTransformer (63)
: : +- ^ InputIteratorTransformer (62)
: : +- ColumnarExchange (60)
@@ -63,7 +63,7 @@ VeloxColumnarToRow (111)
: +- ColumnarBroadcastExchange (87)
: +- ^ ProjectExecTransformer (85)
: +- ^ RegularHashAggregateExecTransformer (84)
- : +- ^ RegularHashAggregateExecTransformer (83)
+ : +- ^ FlushableHashAggregateExecTransformer (83)
: +- ^ RegularHashAggregateExecTransformer (82)
: +- ^ InputIteratorTransformer (81)
: +- ColumnarExchange (79)
@@ -77,7 +77,7 @@ VeloxColumnarToRow (111)
+- ColumnarBroadcastExchange (106)
+- ^ ProjectExecTransformer (104)
+- ^ RegularHashAggregateExecTransformer (103)
- +- ^ RegularHashAggregateExecTransformer (102)
+ +- ^ FlushableHashAggregateExecTransformer (102)
+- ^ RegularHashAggregateExecTransformer (101)
+- ^ InputIteratorTransformer (100)
+- ColumnarExchange (98)
@@ -139,7 +139,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#3)),
merge_count(ss_list_p
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#3))#7,
count(ss_list_price#3)#8]
Results [4]: [ss_list_price#3, sum#9, count#10, count#11]
-(12) RegularHashAggregateExecTransformer
+(12) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#3, sum#9, count#10, count#11]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#3)),
merge_count(ss_list_price#3), partial_count(distinct ss_list_price#3)]
@@ -207,7 +207,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#20)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#20))#24,
count(ss_list_price#20)#25]
Results [4]: [ss_list_price#20, sum#26, count#27, count#28]
-(26) RegularHashAggregateExecTransformer
+(26) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#20, sum#26, count#27, count#28]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#20)),
merge_count(ss_list_price#20), partial_count(distinct ss_list_price#20)]
@@ -293,7 +293,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#37)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#37))#41,
count(ss_list_price#37)#42]
Results [4]: [ss_list_price#37, sum#43, count#44, count#45]
-(45) RegularHashAggregateExecTransformer
+(45) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#37, sum#43, count#44, count#45]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#37)),
merge_count(ss_list_price#37), partial_count(distinct ss_list_price#37)]
@@ -379,7 +379,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#54)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#54))#58,
count(ss_list_price#54)#59]
Results [4]: [ss_list_price#54, sum#60, count#61, count#62]
-(64) RegularHashAggregateExecTransformer
+(64) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#54, sum#60, count#61, count#62]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#54)),
merge_count(ss_list_price#54), partial_count(distinct ss_list_price#54)]
@@ -465,7 +465,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#71)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#71))#75,
count(ss_list_price#71)#76]
Results [4]: [ss_list_price#71, sum#77, count#78, count#79]
-(83) RegularHashAggregateExecTransformer
+(83) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#71, sum#77, count#78, count#79]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#71)),
merge_count(ss_list_price#71), partial_count(distinct ss_list_price#71)]
@@ -551,7 +551,7 @@ Functions [2]: [merge_avg(UnscaledValue(ss_list_price#88)),
merge_count(ss_list_
Aggregate Attributes [2]: [avg(UnscaledValue(ss_list_price#88))#92,
count(ss_list_price#88)#93]
Results [4]: [ss_list_price#88, sum#94, count#95, count#96]
-(102) RegularHashAggregateExecTransformer
+(102) FlushableHashAggregateExecTransformer
Input [4]: [ss_list_price#88, sum#94, count#95, count#96]
Keys: []
Functions [3]: [merge_avg(UnscaledValue(ss_list_price#88)),
merge_count(ss_list_price#88), partial_count(distinct ss_list_price#88)]
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28/simplified.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28/simplified.txt
index dea0985c6f..301a7da3ac 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28/simplified.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q28/simplified.txt
@@ -7,7 +7,7 @@ VeloxColumnarToRow
VeloxBroadcastNestedLoopJoinExecTransformer
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer [sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -25,7 +25,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (3)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer
[sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer
[ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer
[ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -43,7 +43,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (5)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer
[sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -61,7 +61,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (7)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer
[sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -79,7 +79,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (9)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer [sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
@@ -97,7 +97,7 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (11)
ProjectExecTransformer
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price)]
RegularHashAggregateExecTransformer [sum,count,count,count]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count]
- RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
+ FlushableHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),count(ss_list_price),sum,count,count,count,sum,count,count,count]
RegularHashAggregateExecTransformer [ss_list_price]
[avg(UnscaledValue(ss_list_price)),count(ss_list_price),sum,count,count,sum,count,count]
InputIteratorTransformer
InputAdapter
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94.sf100/explain.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94.sf100/explain.txt
index 97f2376b03..27e0618751 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94.sf100/explain.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94.sf100/explain.txt
@@ -2,9 +2,9 @@
VeloxColumnarToRow (59)
+- ^ ProjectExecTransformer (57)
+- ^ RegularHashAggregateExecTransformer (56)
- +- ^ RegularHashAggregateExecTransformer (55)
+ +- ^ FlushableHashAggregateExecTransformer (55)
+- ^ RegularHashAggregateExecTransformer (54)
- +- ^ RegularHashAggregateExecTransformer (53)
+ +- ^ FlushableHashAggregateExecTransformer (53)
+- ^ ProjectExecTransformer (52)
+- ^ BroadcastHashJoinExecTransformer Inner BuildRight (51)
:- ^ ProjectExecTransformer (43)
@@ -266,7 +266,7 @@ Join condition: None
Output [3]: [ws_order_number#5, UnscaledValue(ws_ext_ship_cost#6) AS
_pre_1#26, UnscaledValue(ws_net_profit#7) AS _pre_2#27]
Input [5]: [ws_ship_date_sk#1, ws_order_number#5, ws_ext_ship_cost#6,
ws_net_profit#7, d_date_sk#24]
-(53) RegularHashAggregateExecTransformer
+(53) FlushableHashAggregateExecTransformer
Input [3]: [ws_order_number#5, _pre_1#26, _pre_2#27]
Keys [1]: [ws_order_number#5]
Functions [2]: [partial_sum(_pre_1#26), partial_sum(_pre_2#27)]
@@ -280,7 +280,7 @@ Functions [2]:
[merge_sum(UnscaledValue(ws_ext_ship_cost#6)), merge_sum(Unscaled
Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#6))#28,
sum(UnscaledValue(ws_net_profit#7))#29]
Results [3]: [ws_order_number#5, sum#30, sum#31]
-(55) RegularHashAggregateExecTransformer
+(55) FlushableHashAggregateExecTransformer
Input [3]: [ws_order_number#5, sum#30, sum#31]
Keys: []
Functions [3]: [merge_sum(UnscaledValue(ws_ext_ship_cost#6)),
merge_sum(UnscaledValue(ws_net_profit#7)), partial_count(distinct
ws_order_number#5)]
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94.sf100/simplified.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94.sf100/simplified.txt
index 547b6e4468..48354046aa 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94.sf100/simplified.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94.sf100/simplified.txt
@@ -2,9 +2,9 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (13)
ProjectExecTransformer
[count(ws_order_number),sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit))]
RegularHashAggregateExecTransformer [sum,sum,count]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count]
- RegularHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count,sum,sum,count]
+ FlushableHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count,sum,sum,count]
RegularHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
- RegularHashAggregateExecTransformer
[ws_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
+ FlushableHashAggregateExecTransformer
[ws_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
ProjectExecTransformer
[ws_order_number,ws_ext_ship_cost,ws_net_profit]
BroadcastHashJoinExecTransformer [ws_ship_date_sk,d_date_sk]
ProjectExecTransformer
[ws_ship_date_sk,ws_order_number,ws_ext_ship_cost,ws_net_profit]
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94/explain.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94/explain.txt
index 85b07dc84d..323d43866f 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94/explain.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94/explain.txt
@@ -2,9 +2,9 @@
VeloxColumnarToRow (59)
+- ^ ProjectExecTransformer (57)
+- ^ RegularHashAggregateExecTransformer (56)
- +- ^ RegularHashAggregateExecTransformer (55)
+ +- ^ FlushableHashAggregateExecTransformer (55)
+- ^ RegularHashAggregateExecTransformer (54)
- +- ^ RegularHashAggregateExecTransformer (53)
+ +- ^ FlushableHashAggregateExecTransformer (53)
+- ^ ProjectExecTransformer (52)
+- ^ BroadcastHashJoinExecTransformer Inner BuildRight (51)
:- ^ ProjectExecTransformer (43)
@@ -266,7 +266,7 @@ Join condition: None
Output [3]: [ws_order_number#5, UnscaledValue(ws_ext_ship_cost#6) AS
_pre_1#23, UnscaledValue(ws_net_profit#7) AS _pre_2#24]
Input [5]: [ws_web_site_sk#3, ws_order_number#5, ws_ext_ship_cost#6,
ws_net_profit#7, web_site_sk#21]
-(53) RegularHashAggregateExecTransformer
+(53) FlushableHashAggregateExecTransformer
Input [3]: [ws_order_number#5, _pre_1#23, _pre_2#24]
Keys [1]: [ws_order_number#5]
Functions [2]: [partial_sum(_pre_1#23), partial_sum(_pre_2#24)]
@@ -280,7 +280,7 @@ Functions [2]:
[merge_sum(UnscaledValue(ws_ext_ship_cost#6)), merge_sum(Unscaled
Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#6))#25,
sum(UnscaledValue(ws_net_profit#7))#26]
Results [3]: [ws_order_number#5, sum#27, sum#28]
-(55) RegularHashAggregateExecTransformer
+(55) FlushableHashAggregateExecTransformer
Input [3]: [ws_order_number#5, sum#27, sum#28]
Keys: []
Functions [3]: [merge_sum(UnscaledValue(ws_ext_ship_cost#6)),
merge_sum(UnscaledValue(ws_net_profit#7)), partial_count(distinct
ws_order_number#5)]
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94/simplified.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94/simplified.txt
index f550d94516..d7922584c0 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94/simplified.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q94/simplified.txt
@@ -2,9 +2,9 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (7)
ProjectExecTransformer
[count(ws_order_number),sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit))]
RegularHashAggregateExecTransformer [sum,sum,count]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count]
- RegularHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count,sum,sum,count]
+ FlushableHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count,sum,sum,count]
RegularHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
- RegularHashAggregateExecTransformer
[ws_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
+ FlushableHashAggregateExecTransformer
[ws_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
ProjectExecTransformer
[ws_order_number,ws_ext_ship_cost,ws_net_profit]
BroadcastHashJoinExecTransformer [ws_web_site_sk,web_site_sk]
ProjectExecTransformer
[ws_web_site_sk,ws_order_number,ws_ext_ship_cost,ws_net_profit]
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95.sf100/explain.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95.sf100/explain.txt
index e86dddc86f..1194eee5db 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95.sf100/explain.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95.sf100/explain.txt
@@ -2,9 +2,9 @@
VeloxColumnarToRow (74)
+- ^ ProjectExecTransformer (72)
+- ^ RegularHashAggregateExecTransformer (71)
- +- ^ RegularHashAggregateExecTransformer (70)
+ +- ^ FlushableHashAggregateExecTransformer (70)
+- ^ RegularHashAggregateExecTransformer (69)
- +- ^ RegularHashAggregateExecTransformer (68)
+ +- ^ FlushableHashAggregateExecTransformer (68)
+- ^ ProjectExecTransformer (67)
+- ^ BroadcastHashJoinExecTransformer Inner BuildRight (66)
:- ^ ProjectExecTransformer (58)
@@ -337,7 +337,7 @@ Join condition: None
Output [3]: [ws_order_number#4, UnscaledValue(ws_ext_ship_cost#5) AS
_pre_1#31, UnscaledValue(ws_net_profit#6) AS _pre_2#32]
Input [5]: [ws_ship_date_sk#1, ws_order_number#4, ws_ext_ship_cost#5,
ws_net_profit#6, d_date_sk#29]
-(68) RegularHashAggregateExecTransformer
+(68) FlushableHashAggregateExecTransformer
Input [3]: [ws_order_number#4, _pre_1#31, _pre_2#32]
Keys [1]: [ws_order_number#4]
Functions [2]: [partial_sum(_pre_1#31), partial_sum(_pre_2#32)]
@@ -351,7 +351,7 @@ Functions [2]:
[merge_sum(UnscaledValue(ws_ext_ship_cost#5)), merge_sum(Unscaled
Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#5))#33,
sum(UnscaledValue(ws_net_profit#6))#34]
Results [3]: [ws_order_number#4, sum#35, sum#36]
-(70) RegularHashAggregateExecTransformer
+(70) FlushableHashAggregateExecTransformer
Input [3]: [ws_order_number#4, sum#35, sum#36]
Keys: []
Functions [3]: [merge_sum(UnscaledValue(ws_ext_ship_cost#5)),
merge_sum(UnscaledValue(ws_net_profit#6)), partial_count(distinct
ws_order_number#4)]
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95.sf100/simplified.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95.sf100/simplified.txt
index b764f51091..73a700c52b 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95.sf100/simplified.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95.sf100/simplified.txt
@@ -2,9 +2,9 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (16)
ProjectExecTransformer
[count(ws_order_number),sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit))]
RegularHashAggregateExecTransformer [sum,sum,count]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count]
- RegularHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count,sum,sum,count]
+ FlushableHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count,sum,sum,count]
RegularHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
- RegularHashAggregateExecTransformer
[ws_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
+ FlushableHashAggregateExecTransformer
[ws_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
ProjectExecTransformer
[ws_order_number,ws_ext_ship_cost,ws_net_profit]
BroadcastHashJoinExecTransformer [ws_ship_date_sk,d_date_sk]
ProjectExecTransformer
[ws_ship_date_sk,ws_order_number,ws_ext_ship_cost,ws_net_profit]
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95/explain.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95/explain.txt
index 2ea15db9dd..878fffd6e9 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95/explain.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95/explain.txt
@@ -2,9 +2,9 @@
VeloxColumnarToRow (75)
+- ^ ProjectExecTransformer (73)
+- ^ RegularHashAggregateExecTransformer (72)
- +- ^ RegularHashAggregateExecTransformer (71)
+ +- ^ FlushableHashAggregateExecTransformer (71)
+- ^ RegularHashAggregateExecTransformer (70)
- +- ^ RegularHashAggregateExecTransformer (69)
+ +- ^ FlushableHashAggregateExecTransformer (69)
+- ^ ProjectExecTransformer (68)
+- ^ BroadcastHashJoinExecTransformer Inner BuildRight (67)
:- ^ ProjectExecTransformer (59)
@@ -342,7 +342,7 @@ Join condition: None
Output [3]: [ws_order_number#4, UnscaledValue(ws_ext_ship_cost#5) AS
_pre_1#28, UnscaledValue(ws_net_profit#6) AS _pre_2#29]
Input [5]: [ws_web_site_sk#3, ws_order_number#4, ws_ext_ship_cost#5,
ws_net_profit#6, web_site_sk#26]
-(69) RegularHashAggregateExecTransformer
+(69) FlushableHashAggregateExecTransformer
Input [3]: [ws_order_number#4, _pre_1#28, _pre_2#29]
Keys [1]: [ws_order_number#4]
Functions [2]: [partial_sum(_pre_1#28), partial_sum(_pre_2#29)]
@@ -356,7 +356,7 @@ Functions [2]:
[merge_sum(UnscaledValue(ws_ext_ship_cost#5)), merge_sum(Unscaled
Aggregate Attributes [2]: [sum(UnscaledValue(ws_ext_ship_cost#5))#30,
sum(UnscaledValue(ws_net_profit#6))#31]
Results [3]: [ws_order_number#4, sum#32, sum#33]
-(71) RegularHashAggregateExecTransformer
+(71) FlushableHashAggregateExecTransformer
Input [3]: [ws_order_number#4, sum#32, sum#33]
Keys: []
Functions [3]: [merge_sum(UnscaledValue(ws_ext_ship_cost#5)),
merge_sum(UnscaledValue(ws_net_profit#6)), partial_count(distinct
ws_order_number#4)]
diff --git
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95/simplified.txt
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95/simplified.txt
index 155a6f58ff..cc2b85d466 100644
---
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95/simplified.txt
+++
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q95/simplified.txt
@@ -2,9 +2,9 @@ VeloxColumnarToRow
WholeStageCodegenTransformer (10)
ProjectExecTransformer
[count(ws_order_number),sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit))]
RegularHashAggregateExecTransformer [sum,sum,count]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count]
- RegularHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count,sum,sum,count]
+ FlushableHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),count(ws_order_number),sum,sum,count,sum,sum,count]
RegularHashAggregateExecTransformer [ws_order_number]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
- RegularHashAggregateExecTransformer
[ws_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
+ FlushableHashAggregateExecTransformer
[ws_order_number,_pre_x,_pre_x]
[sum(UnscaledValue(ws_ext_ship_cost)),sum(UnscaledValue(ws_net_profit)),sum,sum,sum,sum]
ProjectExecTransformer
[ws_order_number,ws_ext_ship_cost,ws_net_profit]
BroadcastHashJoinExecTransformer [ws_web_site_sk,web_site_sk]
ProjectExecTransformer
[ws_web_site_sk,ws_order_number,ws_ext_ship_cost,ws_net_profit]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]