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 d175c63220 [VL] Narrow down FlushableHashAggregateRule to only protect 
against Spark code `AggUtils.planAggregateWithOneDistinct` (#12098)
d175c63220 is described below

commit d175c632206a2636ec7dec3c0f82955640d90da6
Author: Hongze Zhang <[email protected]>
AuthorDate: Wed May 27 15:43:18 2026 +0100

    [VL] Narrow down FlushableHashAggregateRule to only protect against Spark 
code `AggUtils.planAggregateWithOneDistinct` (#12098)
---
 .../extension/FlushableHashAggregateRule.scala     | 136 +++++++++++++--------
 .../execution/VeloxAggregateFunctionsSuite.scala   |  20 +--
 .../q14a.sf100/explain.txt                         |   4 +-
 .../q14a.sf100/simplified.txt                      |   2 +-
 .../q14b.sf100/explain.txt                         |   4 +-
 .../q14b.sf100/simplified.txt                      |   2 +-
 .../q38.sf100/explain.txt                          |  12 +-
 .../q38.sf100/simplified.txt                       |   6 +-
 .../q8.sf100/explain.txt                           |   4 +-
 .../q8.sf100/simplified.txt                        |   2 +-
 .../q87.sf100/explain.txt                          |  12 +-
 .../q87.sf100/simplified.txt                       |   6 +-
 .../q14.sf100/explain.txt                          |   4 +-
 .../q14.sf100/simplified.txt                       |   2 +-
 .../q14a.sf100/explain.txt                         |   4 +-
 .../q14a.sf100/simplified.txt                      |   2 +-
 .../q36a.sf100/explain.txt                         |   4 +-
 .../q36a.sf100/simplified.txt                      |   2 +-
 .../gluten-approved-plans-v2_7/q36a/explain.txt    |   4 +-
 .../gluten-approved-plans-v2_7/q36a/simplified.txt |   2 +-
 .../q70a.sf100/explain.txt                         |   4 +-
 .../q70a.sf100/simplified.txt                      |   2 +-
 .../gluten-approved-plans-v2_7/q70a/explain.txt    |   4 +-
 .../gluten-approved-plans-v2_7/q70a/simplified.txt |   2 +-
 .../q86a.sf100/explain.txt                         |   4 +-
 .../q86a.sf100/simplified.txt                      |   2 +-
 .../gluten-approved-plans-v2_7/q86a/explain.txt    |   4 +-
 .../gluten-approved-plans-v2_7/q86a/simplified.txt |   2 +-
 .../q14a.sf100/explain.txt                         |   4 +-
 .../q14a.sf100/simplified.txt                      |   2 +-
 .../q14b.sf100/explain.txt                         |   4 +-
 .../q14b.sf100/simplified.txt                      |   2 +-
 .../q38.sf100/explain.txt                          |  12 +-
 .../q38.sf100/simplified.txt                       |   6 +-
 .../q8.sf100/explain.txt                           |   4 +-
 .../q8.sf100/simplified.txt                        |   2 +-
 .../q87.sf100/explain.txt                          |  12 +-
 .../q87.sf100/simplified.txt                       |   6 +-
 .../q14.sf100/explain.txt                          |   4 +-
 .../q14.sf100/simplified.txt                       |   2 +-
 .../q14a.sf100/explain.txt                         |   4 +-
 .../q14a.sf100/simplified.txt                      |   2 +-
 .../q36a.sf100/explain.txt                         |   4 +-
 .../q36a.sf100/simplified.txt                      |   2 +-
 .../gluten-approved-plans-v2_7/q36a/explain.txt    |   4 +-
 .../gluten-approved-plans-v2_7/q36a/simplified.txt |   2 +-
 .../q70a.sf100/explain.txt                         |   4 +-
 .../q70a.sf100/simplified.txt                      |   2 +-
 .../gluten-approved-plans-v2_7/q70a/explain.txt    |   4 +-
 .../gluten-approved-plans-v2_7/q70a/simplified.txt |   2 +-
 .../q86a.sf100/explain.txt                         |   4 +-
 .../q86a.sf100/simplified.txt                      |   2 +-
 .../gluten-approved-plans-v2_7/q86a/explain.txt    |   4 +-
 .../gluten-approved-plans-v2_7/q86a/simplified.txt |   2 +-
 .../gluten/integration/command/Parameterized.java  |   4 +-
 55 files changed, 199 insertions(+), 165 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 6216dd8747..142aeb6492 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
@@ -21,42 +21,30 @@ 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.plans.physical.ClusteredDistribution
 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.
  */
 case class FlushableHashAggregateRule(session: SparkSession) extends 
Rule[SparkPlan] {
-  import FlushableHashAggregateRule._
   override def apply(plan: SparkPlan): SparkPlan = {
     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) {
-              agg =>
-                FlushableHashAggregateExecTransformer(
-                  agg.requiredChildDistributionExpressions,
-                  agg.groupingExpressions,
-                  agg.aggregateExpressions,
-                  agg.aggregateAttributes,
-                  agg.initialInputBufferOffset,
-                  agg.resultExpressions,
-                  agg.child
-                )
-            }
-          )
+          List(replaceEligibleAggregates(s.child, protectedAggs))
         )
         out
     }
@@ -85,19 +73,35 @@ 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, input is not 
already partitioned by the
-   * grouping keys, and no aggregate function disallows flushing.
+   * eligible when all expressions are Partial/PartialMerge, it is not the 
protected PartialMerge
+   * aggregate directly below a distinct-partial aggregate, and no aggregate 
function disallows
+   * flushing.
    */
-  private def replaceEligibleAggregates(plan: SparkPlan)(
-      func: HashAggregateExecTransformer => SparkPlan): SparkPlan = {
+  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 !agg.aggregateExpressions.forall(p => p.mode == Partial || p.mode 
== PartialMerge) =>
         // Not an intermediate agg. Skip.
         agg
       case agg: RegularHashAggregateExecTransformer
-          if isAggInputAlreadyDistributedWithAggKeys(agg) =>
-        // Data already grouped by aggregate keys. Skip.
+          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) =>
@@ -105,13 +109,13 @@ case class FlushableHashAggregateRule(session: 
SparkSession) extends Rule[SparkP
         agg
       case agg: RegularHashAggregateExecTransformer =>
         // All guards passed; replace with the flushable variant.
-        func(agg)
+        toFlushableAgg(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 
isAggInputAlreadyDistributedWithAggKeys(agg) =>
-        // Data already grouped by aggregate keys. Skip.
+      case agg: SortHashAggregateExecTransformer if 
protectedAggs.contains(agg.id) =>
+        // See the RegularHashAggregateExecTransformer branch above.
         agg
       case agg: SortHashAggregateExecTransformer
           if aggregatesNotSupportFlush(agg.aggregateExpressions) =>
@@ -119,8 +123,11 @@ case class FlushableHashAggregateRule(session: 
SparkSession) extends Rule[SparkP
         agg
       case agg: SortHashAggregateExecTransformer =>
         // All guards passed; replace with the flushable variant.
-        func(agg)
-      case p if !canPropagate(p) => p
+        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))
     }
 
@@ -128,36 +135,57 @@ case class FlushableHashAggregateRule(session: 
SparkSession) extends Rule[SparkP
     out
   }
 
-  private def canPropagate(plan: SparkPlan): Boolean = plan match {
-    case _: ProjectExecTransformer => true
-    case _: VeloxResizeBatchesExec => true
-    case _ => false
-  }
-}
-
-object FlushableHashAggregateRule {
-
   /**
-   * If child output already partitioned by aggregation keys (this function 
returns true), we
-   * usually avoid the optimization converting to flushable aggregation.
+   * Collect the PartialMerge aggregates that must stay regular in Spark's 
one-distinct aggregation
+   * pipeline.
+   *
+   * Example plan shape:
+   *
+   * RegularHashAggregateExecTransformer [k] [count(distinct v)] // 
finalAggregate +-
+   * RegularHashAggregateExecTransformer [k] [count(distinct v)] // 
partialDistinctAggregate +-
+   * RegularHashAggregateExecTransformer [k, v] [count(...)] // 
partialMergeAggregate +-
+   * ColumnarExchange hashpartitioning(k, v, 200) +- 
RegularHashAggregateExecTransformer [k, v]
+   * [count(...)] // partialAggregate +- ...
    *
-   * For example, if input is hash-partitioned by keys (a, b) and aggregate 
node requests "group by
-   * a, b, c", then the aggregate should NOT flush as the grouping set (a, b, 
c) will be created
-   * only on a single partition among the whole cluster. Spark's planner may 
use this information to
-   * perform optimizations like doing "partial_count(a, b, c)" directly on the 
output data.
+   * We walk every aggregate node and, when we encounter the 
`partialDistinctAggregate`, we record
+   * its child `partialMergeAggregate` as protected.
+   *
+   * That `partialMergeAggregate` must stay regular. It is the step that 
materializes the
+   * de-duplicated `(k, v)` stream consumed by the distinct-partial aggregate 
above it. If it
+   * 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 isAggInputAlreadyDistributedWithAggKeys(
-      agg: HashAggregateExecTransformer): Boolean = {
-    if (agg.groupingExpressions.isEmpty) {
-      // Empty grouping set () should not be satisfied by any partitioning 
patterns.
-      //   E.g.,
-      //   (a, b) satisfies (a, b, c)
-      //   (a, b) satisfies (a, b)
-      //   (a, b) doesn't satisfy (a)
-      //   (a, b) doesn't satisfy ()
-      return false
+  private def collectProtectedOneDistinctPartialMergeAggs(
+      plan: SparkPlan): mutable.Map[Int, HashAggregateExecTransformer] = {
+    val protectedAggs = mutable.HashMap.empty[Int, 
HashAggregateExecTransformer]
+    plan.foreach {
+      case agg: HashAggregateExecTransformer =>
+        findProtectedPartialMergeAgg(agg).foreach {
+          protectedAgg => protectedAggs.put(protectedAgg.id, protectedAgg)
+        }
+      case _ =>
+    }
+    protectedAggs
+  }
+
+  /** If this aggregate is the distinct-partial stage, return its child 
PartialMerge aggregate. */
+  private def findProtectedPartialMergeAgg(
+      distinctPartialAgg: HashAggregateExecTransformer): 
Option[HashAggregateExecTransformer] = {
+    if (
+      !distinctPartialAgg.aggregateExpressions.exists(
+        expr => expr.isDistinct && expr.mode == Partial)
+    ) {
+      return None
     }
-    val distribution = ClusteredDistribution(agg.groupingExpressions)
-    agg.child.outputPartitioning.satisfies(distribution)
+
+    for {
+      partialMergeAgg <- asAggregate(distinctPartialAgg.child)
+      if partialMergeAgg.aggregateExpressions.forall(_.mode == PartialMerge)
+    } yield partialMergeAgg
+  }
+
+  private def asAggregate(plan: SparkPlan): 
Option[HashAggregateExecTransformer] = plan match {
+    case agg: HashAggregateExecTransformer => Some(agg)
+    case _ => None
   }
 }
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 9f1c8d5cc1..98b46255ff 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
@@ -1258,20 +1258,26 @@ class VeloxAggregateFunctionsFlushSuite extends 
VeloxAggregateFunctionsSuite {
     }
   }
 
-  test("flushable aggregate rule - agg input already distributed by keys") {
+  test("flushable aggregate rule - count distinct keeps partial merge 
regular") {
     withSQLConf(
       SQLConf.ADAPTIVE_EXECUTION_ENABLED.key -> "false",
       SQLConf.FILES_MAX_PARTITION_BYTES.key -> "1k") {
-      runQueryAndCompare(
-        "select * from (select distinct l_orderkey,l_partkey from lineitem) a" 
+
-          " inner join (select l_orderkey from lineitem limit 10) b" +
-          " on a.l_orderkey = b.l_orderkey limit 10") {
+      runQueryAndCompare("select count(distinct l_partkey) from lineitem group 
by l_orderkey") {
         df =>
           val executedPlan = getExecutedPlan(df)
+          val regularAggCount = executedPlan.count {
+            plan => plan.isInstanceOf[RegularHashAggregateExecTransformer]
+          }
+          val flushableAggCount = executedPlan.count {
+            plan => plan.isInstanceOf[FlushableHashAggregateExecTransformer]
+          }
           assert(
-            executedPlan.exists(plan => 
plan.isInstanceOf[RegularHashAggregateExecTransformer]))
+            regularAggCount == 2,
+            s"expected 2 regular hash aggregates in one-distinct pipeline, got 
$regularAggCount")
           assert(
-            executedPlan.exists(plan => 
plan.isInstanceOf[FlushableHashAggregateExecTransformer]))
+            flushableAggCount == 2,
+            s"expected 2 flushable hash aggregates in one-distinct pipeline, 
got" +
+              s" $flushableAggCount")
       }
     }
   }
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14a.sf100/explain.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14a.sf100/explain.txt
index 91e065185c..e2d3402ee2 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14a.sf100/explain.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14a.sf100/explain.txt
@@ -39,7 +39,7 @@ VeloxColumnarToRow (187)
                                  :                             :     :         
              :  +- ColumnarExchange (58)
                                  :                             :     :         
              :     +- VeloxResizeBatches (57)
                                  :                             :     :         
              :        +- ^ ProjectExecTransformer (55)
-                                 :                             :     :         
              :           +- ^ RegularHashAggregateExecTransformer (54)
+                                 :                             :     :         
              :           +- ^ FlushableHashAggregateExecTransformer (54)
                                  :                             :     :         
              :              +- ^ InputIteratorTransformer (53)
                                  :                             :     :         
              :                 +- ColumnarExchange (51)
                                  :                             :     :         
              :                    +- VeloxResizeBatches (50)
@@ -373,7 +373,7 @@ Input [3]: [brand_id#27, class_id#28, category_id#29]
 (53) InputIteratorTransformer
 Input [3]: [brand_id#27, class_id#28, category_id#29]
 
-(54) RegularHashAggregateExecTransformer
+(54) FlushableHashAggregateExecTransformer
 Input [3]: [brand_id#27, class_id#28, category_id#29]
 Keys [3]: [brand_id#27, class_id#28, category_id#29]
 Functions: []
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14a.sf100/simplified.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14a.sf100/simplified.txt
index 9fe87fb5a0..ba3b8bc9e0 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14a.sf100/simplified.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14a.sf100/simplified.txt
@@ -95,7 +95,7 @@ VeloxColumnarToRow
                                                                                
             VeloxResizeBatches
                                                                                
               WholeStageCodegenTransformer (22)
                                                                                
                 ProjectExecTransformer [brand_id,class_id,category_id]
-                                                                               
                   RegularHashAggregateExecTransformer 
[brand_id,class_id,category_id]
+                                                                               
                   FlushableHashAggregateExecTransformer 
[brand_id,class_id,category_id]
                                                                                
                     InputIteratorTransformer
                                                                                
                       InputAdapter
                                                                                
                         ColumnarExchange [brand_id,class_id,category_id] #7
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14b.sf100/explain.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14b.sf100/explain.txt
index c2761a85a0..c49e2b293c 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14b.sf100/explain.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14b.sf100/explain.txt
@@ -30,7 +30,7 @@ VeloxColumnarToRow (150)
       :                             :     :                       :  +- 
ColumnarExchange (58)
       :                             :     :                       :     +- 
VeloxResizeBatches (57)
       :                             :     :                       :        +- 
^ ProjectExecTransformer (55)
-      :                             :     :                       :           
+- ^ RegularHashAggregateExecTransformer (54)
+      :                             :     :                       :           
+- ^ FlushableHashAggregateExecTransformer (54)
       :                             :     :                       :            
  +- ^ InputIteratorTransformer (53)
       :                             :     :                       :            
     +- ColumnarExchange (51)
       :                             :     :                       :            
        +- VeloxResizeBatches (50)
@@ -345,7 +345,7 @@ Input [3]: [brand_id#27, class_id#28, category_id#29]
 (53) InputIteratorTransformer
 Input [3]: [brand_id#27, class_id#28, category_id#29]
 
-(54) RegularHashAggregateExecTransformer
+(54) FlushableHashAggregateExecTransformer
 Input [3]: [brand_id#27, class_id#28, category_id#29]
 Keys [3]: [brand_id#27, class_id#28, category_id#29]
 Functions: []
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14b.sf100/simplified.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14b.sf100/simplified.txt
index 670b1d15ce..8de7ae6341 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14b.sf100/simplified.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14b.sf100/simplified.txt
@@ -90,7 +90,7 @@ VeloxColumnarToRow
                                                                   
VeloxResizeBatches
                                                                     
WholeStageCodegenTransformer (24)
                                                                       
ProjectExecTransformer [brand_id,class_id,category_id]
-                                                                        
RegularHashAggregateExecTransformer [brand_id,class_id,category_id]
+                                                                        
FlushableHashAggregateExecTransformer [brand_id,class_id,category_id]
                                                                           
InputIteratorTransformer
                                                                             
InputAdapter
                                                                               
ColumnarExchange [brand_id,class_id,category_id] #6
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q38.sf100/explain.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q38.sf100/explain.txt
index 7f48666f41..9dc843bff3 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q38.sf100/explain.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q38.sf100/explain.txt
@@ -8,7 +8,7 @@ VeloxColumnarToRow (104)
          :  :  +- ColumnarExchange (34)
          :  :     +- VeloxResizeBatches (33)
          :  :        +- ^ ProjectExecTransformer (31)
-         :  :           +- ^ RegularHashAggregateExecTransformer (30)
+         :  :           +- ^ FlushableHashAggregateExecTransformer (30)
          :  :              +- ^ InputIteratorTransformer (29)
          :  :                 +- ColumnarExchange (27)
          :  :                    +- VeloxResizeBatches (26)
@@ -35,7 +35,7 @@ VeloxColumnarToRow (104)
          :     +- ColumnarExchange (65)
          :        +- VeloxResizeBatches (64)
          :           +- ^ ProjectExecTransformer (62)
-         :              +- ^ RegularHashAggregateExecTransformer (61)
+         :              +- ^ FlushableHashAggregateExecTransformer (61)
          :                 +- ^ InputIteratorTransformer (60)
          :                    +- ColumnarExchange (58)
          :                       +- VeloxResizeBatches (57)
@@ -58,7 +58,7 @@ VeloxColumnarToRow (104)
             +- ColumnarExchange (97)
                +- VeloxResizeBatches (96)
                   +- ^ ProjectExecTransformer (94)
-                     +- ^ RegularHashAggregateExecTransformer (93)
+                     +- ^ FlushableHashAggregateExecTransformer (93)
                         +- ^ InputIteratorTransformer (92)
                            +- ColumnarExchange (90)
                               +- VeloxResizeBatches (89)
@@ -200,7 +200,7 @@ Input [3]: [c_last_name#9, c_first_name#8, d_date#5]
 (29) InputIteratorTransformer
 Input [3]: [c_last_name#9, c_first_name#8, d_date#5]
 
-(30) RegularHashAggregateExecTransformer
+(30) FlushableHashAggregateExecTransformer
 Input [3]: [c_last_name#9, c_first_name#8, d_date#5]
 Keys [3]: [c_last_name#9, c_first_name#8, d_date#5]
 Functions: []
@@ -326,7 +326,7 @@ Input [3]: [c_last_name#20, c_first_name#19, d_date#16]
 (60) InputIteratorTransformer
 Input [3]: [c_last_name#20, c_first_name#19, d_date#16]
 
-(61) RegularHashAggregateExecTransformer
+(61) FlushableHashAggregateExecTransformer
 Input [3]: [c_last_name#20, c_first_name#19, d_date#16]
 Keys [3]: [c_last_name#20, c_first_name#19, d_date#16]
 Functions: []
@@ -458,7 +458,7 @@ Input [3]: [c_last_name#30, c_first_name#29, d_date#26]
 (92) InputIteratorTransformer
 Input [3]: [c_last_name#30, c_first_name#29, d_date#26]
 
-(93) RegularHashAggregateExecTransformer
+(93) FlushableHashAggregateExecTransformer
 Input [3]: [c_last_name#30, c_first_name#29, d_date#26]
 Keys [3]: [c_last_name#30, c_first_name#29, d_date#26]
 Functions: []
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q38.sf100/simplified.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q38.sf100/simplified.txt
index 54c142449b..d8b5fd2b90 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q38.sf100/simplified.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q38.sf100/simplified.txt
@@ -10,7 +10,7 @@ VeloxColumnarToRow
                   VeloxResizeBatches
                     WholeStageCodegenTransformer (6)
                       ProjectExecTransformer [c_last_name,c_first_name,d_date]
-                        RegularHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
+                        FlushableHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
                           InputIteratorTransformer
                             InputAdapter
                               ColumnarExchange 
[c_last_name,c_first_name,d_date] #2
@@ -52,7 +52,7 @@ VeloxColumnarToRow
                   VeloxResizeBatches
                     WholeStageCodegenTransformer (12)
                       ProjectExecTransformer [c_last_name,c_first_name,d_date]
-                        RegularHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
+                        FlushableHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
                           InputIteratorTransformer
                             InputAdapter
                               ColumnarExchange 
[c_last_name,c_first_name,d_date] #7
@@ -84,7 +84,7 @@ VeloxColumnarToRow
                 VeloxResizeBatches
                   WholeStageCodegenTransformer (18)
                     ProjectExecTransformer [c_last_name,c_first_name,d_date]
-                      RegularHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
+                      FlushableHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
                         InputIteratorTransformer
                           InputAdapter
                             ColumnarExchange [c_last_name,c_first_name,d_date] 
#10
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q8.sf100/explain.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q8.sf100/explain.txt
index 1e5a88f569..057d344bc6 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q8.sf100/explain.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q8.sf100/explain.txt
@@ -29,7 +29,7 @@ VeloxColumnarToRow (85)
                                  +- ColumnarExchange (69)
                                     +- VeloxResizeBatches (68)
                                        +- ^ ProjectExecTransformer (66)
-                                          +- ^ 
RegularHashAggregateExecTransformer (65)
+                                          +- ^ 
FlushableHashAggregateExecTransformer (65)
                                              +- ^ InputIteratorTransformer (64)
                                                 +- ColumnarExchange (62)
                                                    +- VeloxResizeBatches (61)
@@ -337,7 +337,7 @@ Input [1]: [ca_zip#11]
 (64) InputIteratorTransformer
 Input [1]: [ca_zip#11]
 
-(65) RegularHashAggregateExecTransformer
+(65) FlushableHashAggregateExecTransformer
 Input [1]: [ca_zip#11]
 Keys [1]: [ca_zip#11]
 Functions: []
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q8.sf100/simplified.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q8.sf100/simplified.txt
index 77da4dfe6e..f24a2989dd 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q8.sf100/simplified.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q8.sf100/simplified.txt
@@ -44,7 +44,7 @@ VeloxColumnarToRow
                                   VeloxResizeBatches
                                     WholeStageCodegenTransformer (10)
                                       ProjectExecTransformer [ca_zip]
-                                        RegularHashAggregateExecTransformer 
[ca_zip]
+                                        FlushableHashAggregateExecTransformer 
[ca_zip]
                                           InputIteratorTransformer
                                             InputAdapter
                                               ColumnarExchange [ca_zip] #6
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q87.sf100/explain.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q87.sf100/explain.txt
index 4fc5497a3c..9573f717fa 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q87.sf100/explain.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q87.sf100/explain.txt
@@ -8,7 +8,7 @@ VeloxColumnarToRow (104)
          :  :  +- ColumnarExchange (34)
          :  :     +- VeloxResizeBatches (33)
          :  :        +- ^ ProjectExecTransformer (31)
-         :  :           +- ^ RegularHashAggregateExecTransformer (30)
+         :  :           +- ^ FlushableHashAggregateExecTransformer (30)
          :  :              +- ^ InputIteratorTransformer (29)
          :  :                 +- ColumnarExchange (27)
          :  :                    +- VeloxResizeBatches (26)
@@ -35,7 +35,7 @@ VeloxColumnarToRow (104)
          :     +- ColumnarExchange (65)
          :        +- VeloxResizeBatches (64)
          :           +- ^ ProjectExecTransformer (62)
-         :              +- ^ RegularHashAggregateExecTransformer (61)
+         :              +- ^ FlushableHashAggregateExecTransformer (61)
          :                 +- ^ InputIteratorTransformer (60)
          :                    +- ColumnarExchange (58)
          :                       +- VeloxResizeBatches (57)
@@ -58,7 +58,7 @@ VeloxColumnarToRow (104)
             +- ColumnarExchange (97)
                +- VeloxResizeBatches (96)
                   +- ^ ProjectExecTransformer (94)
-                     +- ^ RegularHashAggregateExecTransformer (93)
+                     +- ^ FlushableHashAggregateExecTransformer (93)
                         +- ^ InputIteratorTransformer (92)
                            +- ColumnarExchange (90)
                               +- VeloxResizeBatches (89)
@@ -200,7 +200,7 @@ Input [3]: [c_last_name#9, c_first_name#8, d_date#5]
 (29) InputIteratorTransformer
 Input [3]: [c_last_name#9, c_first_name#8, d_date#5]
 
-(30) RegularHashAggregateExecTransformer
+(30) FlushableHashAggregateExecTransformer
 Input [3]: [c_last_name#9, c_first_name#8, d_date#5]
 Keys [3]: [c_last_name#9, c_first_name#8, d_date#5]
 Functions: []
@@ -326,7 +326,7 @@ Input [3]: [c_last_name#20, c_first_name#19, d_date#16]
 (60) InputIteratorTransformer
 Input [3]: [c_last_name#20, c_first_name#19, d_date#16]
 
-(61) RegularHashAggregateExecTransformer
+(61) FlushableHashAggregateExecTransformer
 Input [3]: [c_last_name#20, c_first_name#19, d_date#16]
 Keys [3]: [c_last_name#20, c_first_name#19, d_date#16]
 Functions: []
@@ -458,7 +458,7 @@ Input [3]: [c_last_name#30, c_first_name#29, d_date#26]
 (92) InputIteratorTransformer
 Input [3]: [c_last_name#30, c_first_name#29, d_date#26]
 
-(93) RegularHashAggregateExecTransformer
+(93) FlushableHashAggregateExecTransformer
 Input [3]: [c_last_name#30, c_first_name#29, d_date#26]
 Keys [3]: [c_last_name#30, c_first_name#29, d_date#26]
 Functions: []
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q87.sf100/simplified.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q87.sf100/simplified.txt
index 54c142449b..d8b5fd2b90 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q87.sf100/simplified.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q87.sf100/simplified.txt
@@ -10,7 +10,7 @@ VeloxColumnarToRow
                   VeloxResizeBatches
                     WholeStageCodegenTransformer (6)
                       ProjectExecTransformer [c_last_name,c_first_name,d_date]
-                        RegularHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
+                        FlushableHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
                           InputIteratorTransformer
                             InputAdapter
                               ColumnarExchange 
[c_last_name,c_first_name,d_date] #2
@@ -52,7 +52,7 @@ VeloxColumnarToRow
                   VeloxResizeBatches
                     WholeStageCodegenTransformer (12)
                       ProjectExecTransformer [c_last_name,c_first_name,d_date]
-                        RegularHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
+                        FlushableHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
                           InputIteratorTransformer
                             InputAdapter
                               ColumnarExchange 
[c_last_name,c_first_name,d_date] #7
@@ -84,7 +84,7 @@ VeloxColumnarToRow
                 VeloxResizeBatches
                   WholeStageCodegenTransformer (18)
                     ProjectExecTransformer [c_last_name,c_first_name,d_date]
-                      RegularHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
+                      FlushableHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
                         InputIteratorTransformer
                           InputAdapter
                             ColumnarExchange [c_last_name,c_first_name,d_date] 
#10
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14.sf100/explain.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14.sf100/explain.txt
index b56686f4da..14307ccf27 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14.sf100/explain.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14.sf100/explain.txt
@@ -30,7 +30,7 @@ VeloxColumnarToRow (150)
       :                             :     :                       :  +- 
ColumnarExchange (58)
       :                             :     :                       :     +- 
VeloxResizeBatches (57)
       :                             :     :                       :        +- 
^ ProjectExecTransformer (55)
-      :                             :     :                       :           
+- ^ RegularHashAggregateExecTransformer (54)
+      :                             :     :                       :           
+- ^ FlushableHashAggregateExecTransformer (54)
       :                             :     :                       :            
  +- ^ InputIteratorTransformer (53)
       :                             :     :                       :            
     +- ColumnarExchange (51)
       :                             :     :                       :            
        +- VeloxResizeBatches (50)
@@ -345,7 +345,7 @@ Input [3]: [brand_id#27, class_id#28, category_id#29]
 (53) InputIteratorTransformer
 Input [3]: [brand_id#27, class_id#28, category_id#29]
 
-(54) RegularHashAggregateExecTransformer
+(54) FlushableHashAggregateExecTransformer
 Input [3]: [brand_id#27, class_id#28, category_id#29]
 Keys [3]: [brand_id#27, class_id#28, category_id#29]
 Functions: []
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14.sf100/simplified.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14.sf100/simplified.txt
index 670b1d15ce..8de7ae6341 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14.sf100/simplified.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14.sf100/simplified.txt
@@ -90,7 +90,7 @@ VeloxColumnarToRow
                                                                   
VeloxResizeBatches
                                                                     
WholeStageCodegenTransformer (24)
                                                                       
ProjectExecTransformer [brand_id,class_id,category_id]
-                                                                        
RegularHashAggregateExecTransformer [brand_id,class_id,category_id]
+                                                                        
FlushableHashAggregateExecTransformer [brand_id,class_id,category_id]
                                                                           
InputIteratorTransformer
                                                                             
InputAdapter
                                                                               
ColumnarExchange [brand_id,class_id,category_id] #6
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14a.sf100/explain.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14a.sf100/explain.txt
index e014c7566f..9895bfc735 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14a.sf100/explain.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14a.sf100/explain.txt
@@ -45,7 +45,7 @@ VeloxColumnarToRow (250)
                            :                       :                           
  :     :                       :  +- ColumnarExchange (58)
                            :                       :                           
  :     :                       :     +- VeloxResizeBatches (57)
                            :                       :                           
  :     :                       :        +- ^ ProjectExecTransformer (55)
-                           :                       :                           
  :     :                       :           +- ^ 
RegularHashAggregateExecTransformer (54)
+                           :                       :                           
  :     :                       :           +- ^ 
FlushableHashAggregateExecTransformer (54)
                            :                       :                           
  :     :                       :              +- ^ InputIteratorTransformer 
(53)
                            :                       :                           
  :     :                       :                 +- ColumnarExchange (51)
                            :                       :                           
  :     :                       :                    +- VeloxResizeBatches (50)
@@ -418,7 +418,7 @@ Input [3]: [brand_id#27, class_id#28, category_id#29]
 (53) InputIteratorTransformer
 Input [3]: [brand_id#27, class_id#28, category_id#29]
 
-(54) RegularHashAggregateExecTransformer
+(54) FlushableHashAggregateExecTransformer
 Input [3]: [brand_id#27, class_id#28, category_id#29]
 Keys [3]: [brand_id#27, class_id#28, category_id#29]
 Functions: []
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14a.sf100/simplified.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14a.sf100/simplified.txt
index c063978c3b..2592299a1a 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14a.sf100/simplified.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14a.sf100/simplified.txt
@@ -110,7 +110,7 @@ VeloxColumnarToRow
                                                                                
                                 VeloxResizeBatches
                                                                                
                                   WholeStageCodegenTransformer (22)
                                                                                
                                     ProjectExecTransformer 
[brand_id,class_id,category_id]
-                                                                               
                                       RegularHashAggregateExecTransformer 
[brand_id,class_id,category_id]
+                                                                               
                                       FlushableHashAggregateExecTransformer 
[brand_id,class_id,category_id]
                                                                                
                                         InputIteratorTransformer
                                                                                
                                           InputAdapter
                                                                                
                                             ColumnarExchange 
[brand_id,class_id,category_id] #8
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a.sf100/explain.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a.sf100/explain.txt
index 2a5c7113d0..d248f62412 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a.sf100/explain.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a.sf100/explain.txt
@@ -9,7 +9,7 @@ VeloxColumnarToRow (81)
                   +- VeloxResizeBatches (72)
                      +- ^ ProjectExecTransformer (70)
                         +- ^ ProjectExecTransformer (69)
-                           +- ^ RegularHashAggregateExecTransformer (68)
+                           +- ^ FlushableHashAggregateExecTransformer (68)
                               +- ^ InputIteratorTransformer (67)
                                  +- ColumnarExchange (65)
                                     +- VeloxResizeBatches (64)
@@ -348,7 +348,7 @@ Input [6]: [gross_margin#22, i_category#12, i_class#11, 
t_category#23, t_class#2
 (67) InputIteratorTransformer
 Input [6]: [gross_margin#22, i_category#12, i_class#11, t_category#23, 
t_class#24, lochierarchy#25]
 
-(68) RegularHashAggregateExecTransformer
+(68) FlushableHashAggregateExecTransformer
 Input [6]: [gross_margin#22, i_category#12, i_class#11, t_category#23, 
t_class#24, lochierarchy#25]
 Keys [6]: [gross_margin#22, i_category#12, i_class#11, t_category#23, 
t_class#24, lochierarchy#25]
 Functions: []
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a.sf100/simplified.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a.sf100/simplified.txt
index 0129209b62..e643c62aee 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a.sf100/simplified.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a.sf100/simplified.txt
@@ -11,7 +11,7 @@ VeloxColumnarToRow
                     WholeStageCodegenTransformer (21)
                       ProjectExecTransformer 
[lochierarchy,_w0,gross_margin,i_category,i_class]
                         ProjectExecTransformer 
[gross_margin,i_category,i_class,lochierarchy,t_class]
-                          RegularHashAggregateExecTransformer 
[gross_margin,i_category,i_class,t_category,t_class,lochierarchy]
+                          FlushableHashAggregateExecTransformer 
[gross_margin,i_category,i_class,t_category,t_class,lochierarchy]
                             InputIteratorTransformer
                               InputAdapter
                                 ColumnarExchange 
[gross_margin,i_category,i_class,t_category,t_class,lochierarchy] #2
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a/explain.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a/explain.txt
index 9fad6bd36f..de6e3285a9 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a/explain.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a/explain.txt
@@ -9,7 +9,7 @@ VeloxColumnarToRow (81)
                   +- VeloxResizeBatches (72)
                      +- ^ ProjectExecTransformer (70)
                         +- ^ ProjectExecTransformer (69)
-                           +- ^ RegularHashAggregateExecTransformer (68)
+                           +- ^ FlushableHashAggregateExecTransformer (68)
                               +- ^ InputIteratorTransformer (67)
                                  +- ColumnarExchange (65)
                                     +- VeloxResizeBatches (64)
@@ -348,7 +348,7 @@ Input [6]: [gross_margin#22, i_category#10, i_class#9, 
t_category#23, t_class#24
 (67) InputIteratorTransformer
 Input [6]: [gross_margin#22, i_category#10, i_class#9, t_category#23, 
t_class#24, lochierarchy#25]
 
-(68) RegularHashAggregateExecTransformer
+(68) FlushableHashAggregateExecTransformer
 Input [6]: [gross_margin#22, i_category#10, i_class#9, t_category#23, 
t_class#24, lochierarchy#25]
 Keys [6]: [gross_margin#22, i_category#10, i_class#9, t_category#23, 
t_class#24, lochierarchy#25]
 Functions: []
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a/simplified.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a/simplified.txt
index 1429b04fd9..d5cc8efaac 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a/simplified.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a/simplified.txt
@@ -11,7 +11,7 @@ VeloxColumnarToRow
                     WholeStageCodegenTransformer (21)
                       ProjectExecTransformer 
[lochierarchy,_w0,gross_margin,i_category,i_class]
                         ProjectExecTransformer 
[gross_margin,i_category,i_class,lochierarchy,t_class]
-                          RegularHashAggregateExecTransformer 
[gross_margin,i_category,i_class,t_category,t_class,lochierarchy]
+                          FlushableHashAggregateExecTransformer 
[gross_margin,i_category,i_class,t_category,t_class,lochierarchy]
                             InputIteratorTransformer
                               InputAdapter
                                 ColumnarExchange 
[gross_margin,i_category,i_class,t_category,t_class,lochierarchy] #2
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a.sf100/explain.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a.sf100/explain.txt
index 8b62712d86..8ef5a37235 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a.sf100/explain.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a.sf100/explain.txt
@@ -9,7 +9,7 @@ VeloxColumnarToRow (106)
                   +- VeloxResizeBatches (97)
                      +- ^ ProjectExecTransformer (95)
                         +- ^ ProjectExecTransformer (94)
-                           +- ^ RegularHashAggregateExecTransformer (93)
+                           +- ^ FlushableHashAggregateExecTransformer (93)
                               +- ^ InputIteratorTransformer (92)
                                  +- ColumnarExchange (90)
                                     +- VeloxResizeBatches (89)
@@ -475,7 +475,7 @@ Input [6]: [total_sum#27, s_state#8, s_county#7, 
g_state#28, g_county#29, lochie
 (92) InputIteratorTransformer
 Input [6]: [total_sum#27, s_state#8, s_county#7, g_state#28, g_county#29, 
lochierarchy#30]
 
-(93) RegularHashAggregateExecTransformer
+(93) FlushableHashAggregateExecTransformer
 Input [6]: [total_sum#27, s_state#8, s_county#7, g_state#28, g_county#29, 
lochierarchy#30]
 Keys [6]: [total_sum#27, s_state#8, s_county#7, g_state#28, g_county#29, 
lochierarchy#30]
 Functions: []
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a.sf100/simplified.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a.sf100/simplified.txt
index 81dd34e12b..0823748825 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a.sf100/simplified.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a.sf100/simplified.txt
@@ -11,7 +11,7 @@ VeloxColumnarToRow
                     WholeStageCodegenTransformer (33)
                       ProjectExecTransformer 
[lochierarchy,_w0,total_sum,s_state,s_county]
                         ProjectExecTransformer 
[total_sum,s_state,s_county,lochierarchy,g_county]
-                          RegularHashAggregateExecTransformer 
[total_sum,s_state,s_county,g_state,g_county,lochierarchy]
+                          FlushableHashAggregateExecTransformer 
[total_sum,s_state,s_county,g_state,g_county,lochierarchy]
                             InputIteratorTransformer
                               InputAdapter
                                 ColumnarExchange 
[total_sum,s_state,s_county,g_state,g_county,lochierarchy] #2
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a/explain.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a/explain.txt
index 148593a512..823a0332a7 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a/explain.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a/explain.txt
@@ -9,7 +9,7 @@ VeloxColumnarToRow (106)
                   +- VeloxResizeBatches (97)
                      +- ^ ProjectExecTransformer (95)
                         +- ^ ProjectExecTransformer (94)
-                           +- ^ RegularHashAggregateExecTransformer (93)
+                           +- ^ FlushableHashAggregateExecTransformer (93)
                               +- ^ InputIteratorTransformer (92)
                                  +- ColumnarExchange (90)
                                     +- VeloxResizeBatches (89)
@@ -475,7 +475,7 @@ Input [6]: [total_sum#27, s_state#8, s_county#7, 
g_state#28, g_county#29, lochie
 (92) InputIteratorTransformer
 Input [6]: [total_sum#27, s_state#8, s_county#7, g_state#28, g_county#29, 
lochierarchy#30]
 
-(93) RegularHashAggregateExecTransformer
+(93) FlushableHashAggregateExecTransformer
 Input [6]: [total_sum#27, s_state#8, s_county#7, g_state#28, g_county#29, 
lochierarchy#30]
 Keys [6]: [total_sum#27, s_state#8, s_county#7, g_state#28, g_county#29, 
lochierarchy#30]
 Functions: []
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a/simplified.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a/simplified.txt
index 07d935f23b..f4b2f2aa2c 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a/simplified.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a/simplified.txt
@@ -11,7 +11,7 @@ VeloxColumnarToRow
                     WholeStageCodegenTransformer (33)
                       ProjectExecTransformer 
[lochierarchy,_w0,total_sum,s_state,s_county]
                         ProjectExecTransformer 
[total_sum,s_state,s_county,lochierarchy,g_county]
-                          RegularHashAggregateExecTransformer 
[total_sum,s_state,s_county,g_state,g_county,lochierarchy]
+                          FlushableHashAggregateExecTransformer 
[total_sum,s_state,s_county,g_state,g_county,lochierarchy]
                             InputIteratorTransformer
                               InputAdapter
                                 ColumnarExchange 
[total_sum,s_state,s_county,g_state,g_county,lochierarchy] #2
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a.sf100/explain.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a.sf100/explain.txt
index 24ec6ab60b..eaa13679e1 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a.sf100/explain.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a.sf100/explain.txt
@@ -9,7 +9,7 @@ VeloxColumnarToRow (72)
                   +- VeloxResizeBatches (63)
                      +- ^ ProjectExecTransformer (61)
                         +- ^ ProjectExecTransformer (60)
-                           +- ^ RegularHashAggregateExecTransformer (59)
+                           +- ^ FlushableHashAggregateExecTransformer (59)
                               +- ^ InputIteratorTransformer (58)
                                  +- ColumnarExchange (56)
                                     +- VeloxResizeBatches (55)
@@ -302,7 +302,7 @@ Input [6]: [total_sum#14, i_category#8, i_class#7, 
g_category#15, g_class#16, lo
 (58) InputIteratorTransformer
 Input [6]: [total_sum#14, i_category#8, i_class#7, g_category#15, g_class#16, 
lochierarchy#17]
 
-(59) RegularHashAggregateExecTransformer
+(59) FlushableHashAggregateExecTransformer
 Input [6]: [total_sum#14, i_category#8, i_class#7, g_category#15, g_class#16, 
lochierarchy#17]
 Keys [6]: [total_sum#14, i_category#8, i_class#7, g_category#15, g_class#16, 
lochierarchy#17]
 Functions: []
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a.sf100/simplified.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a.sf100/simplified.txt
index 2acb03c77a..92c4138a09 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a.sf100/simplified.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a.sf100/simplified.txt
@@ -11,7 +11,7 @@ VeloxColumnarToRow
                     WholeStageCodegenTransformer (18)
                       ProjectExecTransformer 
[lochierarchy,_w0,total_sum,i_category,i_class]
                         ProjectExecTransformer 
[total_sum,i_category,i_class,lochierarchy,g_class]
-                          RegularHashAggregateExecTransformer 
[total_sum,i_category,i_class,g_category,g_class,lochierarchy]
+                          FlushableHashAggregateExecTransformer 
[total_sum,i_category,i_class,g_category,g_class,lochierarchy]
                             InputIteratorTransformer
                               InputAdapter
                                 ColumnarExchange 
[total_sum,i_category,i_class,g_category,g_class,lochierarchy] #2
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a/explain.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a/explain.txt
index 24ec6ab60b..eaa13679e1 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a/explain.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a/explain.txt
@@ -9,7 +9,7 @@ VeloxColumnarToRow (72)
                   +- VeloxResizeBatches (63)
                      +- ^ ProjectExecTransformer (61)
                         +- ^ ProjectExecTransformer (60)
-                           +- ^ RegularHashAggregateExecTransformer (59)
+                           +- ^ FlushableHashAggregateExecTransformer (59)
                               +- ^ InputIteratorTransformer (58)
                                  +- ColumnarExchange (56)
                                     +- VeloxResizeBatches (55)
@@ -302,7 +302,7 @@ Input [6]: [total_sum#14, i_category#8, i_class#7, 
g_category#15, g_class#16, lo
 (58) InputIteratorTransformer
 Input [6]: [total_sum#14, i_category#8, i_class#7, g_category#15, g_class#16, 
lochierarchy#17]
 
-(59) RegularHashAggregateExecTransformer
+(59) FlushableHashAggregateExecTransformer
 Input [6]: [total_sum#14, i_category#8, i_class#7, g_category#15, g_class#16, 
lochierarchy#17]
 Keys [6]: [total_sum#14, i_category#8, i_class#7, g_category#15, g_class#16, 
lochierarchy#17]
 Functions: []
diff --git 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a/simplified.txt
 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a/simplified.txt
index 2acb03c77a..92c4138a09 100644
--- 
a/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a/simplified.txt
+++ 
b/gluten-ut/spark40/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a/simplified.txt
@@ -11,7 +11,7 @@ VeloxColumnarToRow
                     WholeStageCodegenTransformer (18)
                       ProjectExecTransformer 
[lochierarchy,_w0,total_sum,i_category,i_class]
                         ProjectExecTransformer 
[total_sum,i_category,i_class,lochierarchy,g_class]
-                          RegularHashAggregateExecTransformer 
[total_sum,i_category,i_class,g_category,g_class,lochierarchy]
+                          FlushableHashAggregateExecTransformer 
[total_sum,i_category,i_class,g_category,g_class,lochierarchy]
                             InputIteratorTransformer
                               InputAdapter
                                 ColumnarExchange 
[total_sum,i_category,i_class,g_category,g_class,lochierarchy] #2
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14a.sf100/explain.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14a.sf100/explain.txt
index 16e504bc53..623a054d45 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14a.sf100/explain.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14a.sf100/explain.txt
@@ -39,7 +39,7 @@ VeloxColumnarToRow (187)
                                  :                             :     :         
              :  +- ColumnarExchange (58)
                                  :                             :     :         
              :     +- VeloxResizeBatches (57)
                                  :                             :     :         
              :        +- ^ ProjectExecTransformer (55)
-                                 :                             :     :         
              :           +- ^ RegularHashAggregateExecTransformer (54)
+                                 :                             :     :         
              :           +- ^ FlushableHashAggregateExecTransformer (54)
                                  :                             :     :         
              :              +- ^ InputIteratorTransformer (53)
                                  :                             :     :         
              :                 +- ColumnarExchange (51)
                                  :                             :     :         
              :                    +- VeloxResizeBatches (50)
@@ -373,7 +373,7 @@ Input [3]: [brand_id#27, class_id#28, category_id#29]
 (53) InputIteratorTransformer
 Input [3]: [brand_id#27, class_id#28, category_id#29]
 
-(54) RegularHashAggregateExecTransformer
+(54) FlushableHashAggregateExecTransformer
 Input [3]: [brand_id#27, class_id#28, category_id#29]
 Keys [3]: [brand_id#27, class_id#28, category_id#29]
 Functions: []
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14a.sf100/simplified.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14a.sf100/simplified.txt
index f84f9ea6fe..e94b37c1e4 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14a.sf100/simplified.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14a.sf100/simplified.txt
@@ -95,7 +95,7 @@ VeloxColumnarToRow
                                                                                
             VeloxResizeBatches
                                                                                
               WholeStageCodegenTransformer (22)
                                                                                
                 ProjectExecTransformer [brand_id,class_id,category_id]
-                                                                               
                   RegularHashAggregateExecTransformer 
[brand_id,class_id,category_id]
+                                                                               
                   FlushableHashAggregateExecTransformer 
[brand_id,class_id,category_id]
                                                                                
                     InputIteratorTransformer
                                                                                
                       InputAdapter
                                                                                
                         ColumnarExchange [brand_id,class_id,category_id] #7
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14b.sf100/explain.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14b.sf100/explain.txt
index c2761a85a0..c49e2b293c 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14b.sf100/explain.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14b.sf100/explain.txt
@@ -30,7 +30,7 @@ VeloxColumnarToRow (150)
       :                             :     :                       :  +- 
ColumnarExchange (58)
       :                             :     :                       :     +- 
VeloxResizeBatches (57)
       :                             :     :                       :        +- 
^ ProjectExecTransformer (55)
-      :                             :     :                       :           
+- ^ RegularHashAggregateExecTransformer (54)
+      :                             :     :                       :           
+- ^ FlushableHashAggregateExecTransformer (54)
       :                             :     :                       :            
  +- ^ InputIteratorTransformer (53)
       :                             :     :                       :            
     +- ColumnarExchange (51)
       :                             :     :                       :            
        +- VeloxResizeBatches (50)
@@ -345,7 +345,7 @@ Input [3]: [brand_id#27, class_id#28, category_id#29]
 (53) InputIteratorTransformer
 Input [3]: [brand_id#27, class_id#28, category_id#29]
 
-(54) RegularHashAggregateExecTransformer
+(54) FlushableHashAggregateExecTransformer
 Input [3]: [brand_id#27, class_id#28, category_id#29]
 Keys [3]: [brand_id#27, class_id#28, category_id#29]
 Functions: []
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14b.sf100/simplified.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14b.sf100/simplified.txt
index 670b1d15ce..8de7ae6341 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14b.sf100/simplified.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q14b.sf100/simplified.txt
@@ -90,7 +90,7 @@ VeloxColumnarToRow
                                                                   
VeloxResizeBatches
                                                                     
WholeStageCodegenTransformer (24)
                                                                       
ProjectExecTransformer [brand_id,class_id,category_id]
-                                                                        
RegularHashAggregateExecTransformer [brand_id,class_id,category_id]
+                                                                        
FlushableHashAggregateExecTransformer [brand_id,class_id,category_id]
                                                                           
InputIteratorTransformer
                                                                             
InputAdapter
                                                                               
ColumnarExchange [brand_id,class_id,category_id] #6
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q38.sf100/explain.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q38.sf100/explain.txt
index 7f48666f41..9dc843bff3 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q38.sf100/explain.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q38.sf100/explain.txt
@@ -8,7 +8,7 @@ VeloxColumnarToRow (104)
          :  :  +- ColumnarExchange (34)
          :  :     +- VeloxResizeBatches (33)
          :  :        +- ^ ProjectExecTransformer (31)
-         :  :           +- ^ RegularHashAggregateExecTransformer (30)
+         :  :           +- ^ FlushableHashAggregateExecTransformer (30)
          :  :              +- ^ InputIteratorTransformer (29)
          :  :                 +- ColumnarExchange (27)
          :  :                    +- VeloxResizeBatches (26)
@@ -35,7 +35,7 @@ VeloxColumnarToRow (104)
          :     +- ColumnarExchange (65)
          :        +- VeloxResizeBatches (64)
          :           +- ^ ProjectExecTransformer (62)
-         :              +- ^ RegularHashAggregateExecTransformer (61)
+         :              +- ^ FlushableHashAggregateExecTransformer (61)
          :                 +- ^ InputIteratorTransformer (60)
          :                    +- ColumnarExchange (58)
          :                       +- VeloxResizeBatches (57)
@@ -58,7 +58,7 @@ VeloxColumnarToRow (104)
             +- ColumnarExchange (97)
                +- VeloxResizeBatches (96)
                   +- ^ ProjectExecTransformer (94)
-                     +- ^ RegularHashAggregateExecTransformer (93)
+                     +- ^ FlushableHashAggregateExecTransformer (93)
                         +- ^ InputIteratorTransformer (92)
                            +- ColumnarExchange (90)
                               +- VeloxResizeBatches (89)
@@ -200,7 +200,7 @@ Input [3]: [c_last_name#9, c_first_name#8, d_date#5]
 (29) InputIteratorTransformer
 Input [3]: [c_last_name#9, c_first_name#8, d_date#5]
 
-(30) RegularHashAggregateExecTransformer
+(30) FlushableHashAggregateExecTransformer
 Input [3]: [c_last_name#9, c_first_name#8, d_date#5]
 Keys [3]: [c_last_name#9, c_first_name#8, d_date#5]
 Functions: []
@@ -326,7 +326,7 @@ Input [3]: [c_last_name#20, c_first_name#19, d_date#16]
 (60) InputIteratorTransformer
 Input [3]: [c_last_name#20, c_first_name#19, d_date#16]
 
-(61) RegularHashAggregateExecTransformer
+(61) FlushableHashAggregateExecTransformer
 Input [3]: [c_last_name#20, c_first_name#19, d_date#16]
 Keys [3]: [c_last_name#20, c_first_name#19, d_date#16]
 Functions: []
@@ -458,7 +458,7 @@ Input [3]: [c_last_name#30, c_first_name#29, d_date#26]
 (92) InputIteratorTransformer
 Input [3]: [c_last_name#30, c_first_name#29, d_date#26]
 
-(93) RegularHashAggregateExecTransformer
+(93) FlushableHashAggregateExecTransformer
 Input [3]: [c_last_name#30, c_first_name#29, d_date#26]
 Keys [3]: [c_last_name#30, c_first_name#29, d_date#26]
 Functions: []
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q38.sf100/simplified.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q38.sf100/simplified.txt
index 54c142449b..d8b5fd2b90 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q38.sf100/simplified.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q38.sf100/simplified.txt
@@ -10,7 +10,7 @@ VeloxColumnarToRow
                   VeloxResizeBatches
                     WholeStageCodegenTransformer (6)
                       ProjectExecTransformer [c_last_name,c_first_name,d_date]
-                        RegularHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
+                        FlushableHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
                           InputIteratorTransformer
                             InputAdapter
                               ColumnarExchange 
[c_last_name,c_first_name,d_date] #2
@@ -52,7 +52,7 @@ VeloxColumnarToRow
                   VeloxResizeBatches
                     WholeStageCodegenTransformer (12)
                       ProjectExecTransformer [c_last_name,c_first_name,d_date]
-                        RegularHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
+                        FlushableHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
                           InputIteratorTransformer
                             InputAdapter
                               ColumnarExchange 
[c_last_name,c_first_name,d_date] #7
@@ -84,7 +84,7 @@ VeloxColumnarToRow
                 VeloxResizeBatches
                   WholeStageCodegenTransformer (18)
                     ProjectExecTransformer [c_last_name,c_first_name,d_date]
-                      RegularHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
+                      FlushableHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
                         InputIteratorTransformer
                           InputAdapter
                             ColumnarExchange [c_last_name,c_first_name,d_date] 
#10
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q8.sf100/explain.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q8.sf100/explain.txt
index 1e5a88f569..057d344bc6 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q8.sf100/explain.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q8.sf100/explain.txt
@@ -29,7 +29,7 @@ VeloxColumnarToRow (85)
                                  +- ColumnarExchange (69)
                                     +- VeloxResizeBatches (68)
                                        +- ^ ProjectExecTransformer (66)
-                                          +- ^ 
RegularHashAggregateExecTransformer (65)
+                                          +- ^ 
FlushableHashAggregateExecTransformer (65)
                                              +- ^ InputIteratorTransformer (64)
                                                 +- ColumnarExchange (62)
                                                    +- VeloxResizeBatches (61)
@@ -337,7 +337,7 @@ Input [1]: [ca_zip#11]
 (64) InputIteratorTransformer
 Input [1]: [ca_zip#11]
 
-(65) RegularHashAggregateExecTransformer
+(65) FlushableHashAggregateExecTransformer
 Input [1]: [ca_zip#11]
 Keys [1]: [ca_zip#11]
 Functions: []
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q8.sf100/simplified.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q8.sf100/simplified.txt
index 77da4dfe6e..f24a2989dd 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q8.sf100/simplified.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q8.sf100/simplified.txt
@@ -44,7 +44,7 @@ VeloxColumnarToRow
                                   VeloxResizeBatches
                                     WholeStageCodegenTransformer (10)
                                       ProjectExecTransformer [ca_zip]
-                                        RegularHashAggregateExecTransformer 
[ca_zip]
+                                        FlushableHashAggregateExecTransformer 
[ca_zip]
                                           InputIteratorTransformer
                                             InputAdapter
                                               ColumnarExchange [ca_zip] #6
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q87.sf100/explain.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q87.sf100/explain.txt
index 4fc5497a3c..9573f717fa 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q87.sf100/explain.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q87.sf100/explain.txt
@@ -8,7 +8,7 @@ VeloxColumnarToRow (104)
          :  :  +- ColumnarExchange (34)
          :  :     +- VeloxResizeBatches (33)
          :  :        +- ^ ProjectExecTransformer (31)
-         :  :           +- ^ RegularHashAggregateExecTransformer (30)
+         :  :           +- ^ FlushableHashAggregateExecTransformer (30)
          :  :              +- ^ InputIteratorTransformer (29)
          :  :                 +- ColumnarExchange (27)
          :  :                    +- VeloxResizeBatches (26)
@@ -35,7 +35,7 @@ VeloxColumnarToRow (104)
          :     +- ColumnarExchange (65)
          :        +- VeloxResizeBatches (64)
          :           +- ^ ProjectExecTransformer (62)
-         :              +- ^ RegularHashAggregateExecTransformer (61)
+         :              +- ^ FlushableHashAggregateExecTransformer (61)
          :                 +- ^ InputIteratorTransformer (60)
          :                    +- ColumnarExchange (58)
          :                       +- VeloxResizeBatches (57)
@@ -58,7 +58,7 @@ VeloxColumnarToRow (104)
             +- ColumnarExchange (97)
                +- VeloxResizeBatches (96)
                   +- ^ ProjectExecTransformer (94)
-                     +- ^ RegularHashAggregateExecTransformer (93)
+                     +- ^ FlushableHashAggregateExecTransformer (93)
                         +- ^ InputIteratorTransformer (92)
                            +- ColumnarExchange (90)
                               +- VeloxResizeBatches (89)
@@ -200,7 +200,7 @@ Input [3]: [c_last_name#9, c_first_name#8, d_date#5]
 (29) InputIteratorTransformer
 Input [3]: [c_last_name#9, c_first_name#8, d_date#5]
 
-(30) RegularHashAggregateExecTransformer
+(30) FlushableHashAggregateExecTransformer
 Input [3]: [c_last_name#9, c_first_name#8, d_date#5]
 Keys [3]: [c_last_name#9, c_first_name#8, d_date#5]
 Functions: []
@@ -326,7 +326,7 @@ Input [3]: [c_last_name#20, c_first_name#19, d_date#16]
 (60) InputIteratorTransformer
 Input [3]: [c_last_name#20, c_first_name#19, d_date#16]
 
-(61) RegularHashAggregateExecTransformer
+(61) FlushableHashAggregateExecTransformer
 Input [3]: [c_last_name#20, c_first_name#19, d_date#16]
 Keys [3]: [c_last_name#20, c_first_name#19, d_date#16]
 Functions: []
@@ -458,7 +458,7 @@ Input [3]: [c_last_name#30, c_first_name#29, d_date#26]
 (92) InputIteratorTransformer
 Input [3]: [c_last_name#30, c_first_name#29, d_date#26]
 
-(93) RegularHashAggregateExecTransformer
+(93) FlushableHashAggregateExecTransformer
 Input [3]: [c_last_name#30, c_first_name#29, d_date#26]
 Keys [3]: [c_last_name#30, c_first_name#29, d_date#26]
 Functions: []
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q87.sf100/simplified.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q87.sf100/simplified.txt
index 54c142449b..d8b5fd2b90 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q87.sf100/simplified.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v1_4/q87.sf100/simplified.txt
@@ -10,7 +10,7 @@ VeloxColumnarToRow
                   VeloxResizeBatches
                     WholeStageCodegenTransformer (6)
                       ProjectExecTransformer [c_last_name,c_first_name,d_date]
-                        RegularHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
+                        FlushableHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
                           InputIteratorTransformer
                             InputAdapter
                               ColumnarExchange 
[c_last_name,c_first_name,d_date] #2
@@ -52,7 +52,7 @@ VeloxColumnarToRow
                   VeloxResizeBatches
                     WholeStageCodegenTransformer (12)
                       ProjectExecTransformer [c_last_name,c_first_name,d_date]
-                        RegularHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
+                        FlushableHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
                           InputIteratorTransformer
                             InputAdapter
                               ColumnarExchange 
[c_last_name,c_first_name,d_date] #7
@@ -84,7 +84,7 @@ VeloxColumnarToRow
                 VeloxResizeBatches
                   WholeStageCodegenTransformer (18)
                     ProjectExecTransformer [c_last_name,c_first_name,d_date]
-                      RegularHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
+                      FlushableHashAggregateExecTransformer 
[c_last_name,c_first_name,d_date]
                         InputIteratorTransformer
                           InputAdapter
                             ColumnarExchange [c_last_name,c_first_name,d_date] 
#10
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14.sf100/explain.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14.sf100/explain.txt
index b56686f4da..14307ccf27 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14.sf100/explain.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14.sf100/explain.txt
@@ -30,7 +30,7 @@ VeloxColumnarToRow (150)
       :                             :     :                       :  +- 
ColumnarExchange (58)
       :                             :     :                       :     +- 
VeloxResizeBatches (57)
       :                             :     :                       :        +- 
^ ProjectExecTransformer (55)
-      :                             :     :                       :           
+- ^ RegularHashAggregateExecTransformer (54)
+      :                             :     :                       :           
+- ^ FlushableHashAggregateExecTransformer (54)
       :                             :     :                       :            
  +- ^ InputIteratorTransformer (53)
       :                             :     :                       :            
     +- ColumnarExchange (51)
       :                             :     :                       :            
        +- VeloxResizeBatches (50)
@@ -345,7 +345,7 @@ Input [3]: [brand_id#27, class_id#28, category_id#29]
 (53) InputIteratorTransformer
 Input [3]: [brand_id#27, class_id#28, category_id#29]
 
-(54) RegularHashAggregateExecTransformer
+(54) FlushableHashAggregateExecTransformer
 Input [3]: [brand_id#27, class_id#28, category_id#29]
 Keys [3]: [brand_id#27, class_id#28, category_id#29]
 Functions: []
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14.sf100/simplified.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14.sf100/simplified.txt
index 670b1d15ce..8de7ae6341 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14.sf100/simplified.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14.sf100/simplified.txt
@@ -90,7 +90,7 @@ VeloxColumnarToRow
                                                                   
VeloxResizeBatches
                                                                     
WholeStageCodegenTransformer (24)
                                                                       
ProjectExecTransformer [brand_id,class_id,category_id]
-                                                                        
RegularHashAggregateExecTransformer [brand_id,class_id,category_id]
+                                                                        
FlushableHashAggregateExecTransformer [brand_id,class_id,category_id]
                                                                           
InputIteratorTransformer
                                                                             
InputAdapter
                                                                               
ColumnarExchange [brand_id,class_id,category_id] #6
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14a.sf100/explain.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14a.sf100/explain.txt
index b98f1c93a8..19a274494e 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14a.sf100/explain.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14a.sf100/explain.txt
@@ -40,7 +40,7 @@ VeloxColumnarToRow (327)
                            :        :                             :     :      
                 :  +- ColumnarExchange (58)
                            :        :                             :     :      
                 :     +- VeloxResizeBatches (57)
                            :        :                             :     :      
                 :        +- ^ ProjectExecTransformer (55)
-                           :        :                             :     :      
                 :           +- ^ RegularHashAggregateExecTransformer (54)
+                           :        :                             :     :      
                 :           +- ^ FlushableHashAggregateExecTransformer (54)
                            :        :                             :     :      
                 :              +- ^ InputIteratorTransformer (53)
                            :        :                             :     :      
                 :                 +- ColumnarExchange (51)
                            :        :                             :     :      
                 :                    +- VeloxResizeBatches (50)
@@ -473,7 +473,7 @@ Input [3]: [brand_id#27, class_id#28, category_id#29]
 (53) InputIteratorTransformer
 Input [3]: [brand_id#27, class_id#28, category_id#29]
 
-(54) RegularHashAggregateExecTransformer
+(54) FlushableHashAggregateExecTransformer
 Input [3]: [brand_id#27, class_id#28, category_id#29]
 Keys [3]: [brand_id#27, class_id#28, category_id#29]
 Functions: []
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14a.sf100/simplified.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14a.sf100/simplified.txt
index 655299facf..6b4558ed20 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14a.sf100/simplified.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q14a.sf100/simplified.txt
@@ -103,7 +103,7 @@ VeloxColumnarToRow
                                                                                
                   VeloxResizeBatches
                                                                                
                     WholeStageCodegenTransformer (22)
                                                                                
                       ProjectExecTransformer [brand_id,class_id,category_id]
-                                                                               
                         RegularHashAggregateExecTransformer 
[brand_id,class_id,category_id]
+                                                                               
                         FlushableHashAggregateExecTransformer 
[brand_id,class_id,category_id]
                                                                                
                           InputIteratorTransformer
                                                                                
                             InputAdapter
                                                                                
                               ColumnarExchange [brand_id,class_id,category_id] 
#7
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a.sf100/explain.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a.sf100/explain.txt
index 2a5c7113d0..d248f62412 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a.sf100/explain.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a.sf100/explain.txt
@@ -9,7 +9,7 @@ VeloxColumnarToRow (81)
                   +- VeloxResizeBatches (72)
                      +- ^ ProjectExecTransformer (70)
                         +- ^ ProjectExecTransformer (69)
-                           +- ^ RegularHashAggregateExecTransformer (68)
+                           +- ^ FlushableHashAggregateExecTransformer (68)
                               +- ^ InputIteratorTransformer (67)
                                  +- ColumnarExchange (65)
                                     +- VeloxResizeBatches (64)
@@ -348,7 +348,7 @@ Input [6]: [gross_margin#22, i_category#12, i_class#11, 
t_category#23, t_class#2
 (67) InputIteratorTransformer
 Input [6]: [gross_margin#22, i_category#12, i_class#11, t_category#23, 
t_class#24, lochierarchy#25]
 
-(68) RegularHashAggregateExecTransformer
+(68) FlushableHashAggregateExecTransformer
 Input [6]: [gross_margin#22, i_category#12, i_class#11, t_category#23, 
t_class#24, lochierarchy#25]
 Keys [6]: [gross_margin#22, i_category#12, i_class#11, t_category#23, 
t_class#24, lochierarchy#25]
 Functions: []
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a.sf100/simplified.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a.sf100/simplified.txt
index 0129209b62..e643c62aee 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a.sf100/simplified.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a.sf100/simplified.txt
@@ -11,7 +11,7 @@ VeloxColumnarToRow
                     WholeStageCodegenTransformer (21)
                       ProjectExecTransformer 
[lochierarchy,_w0,gross_margin,i_category,i_class]
                         ProjectExecTransformer 
[gross_margin,i_category,i_class,lochierarchy,t_class]
-                          RegularHashAggregateExecTransformer 
[gross_margin,i_category,i_class,t_category,t_class,lochierarchy]
+                          FlushableHashAggregateExecTransformer 
[gross_margin,i_category,i_class,t_category,t_class,lochierarchy]
                             InputIteratorTransformer
                               InputAdapter
                                 ColumnarExchange 
[gross_margin,i_category,i_class,t_category,t_class,lochierarchy] #2
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a/explain.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a/explain.txt
index 9fad6bd36f..de6e3285a9 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a/explain.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a/explain.txt
@@ -9,7 +9,7 @@ VeloxColumnarToRow (81)
                   +- VeloxResizeBatches (72)
                      +- ^ ProjectExecTransformer (70)
                         +- ^ ProjectExecTransformer (69)
-                           +- ^ RegularHashAggregateExecTransformer (68)
+                           +- ^ FlushableHashAggregateExecTransformer (68)
                               +- ^ InputIteratorTransformer (67)
                                  +- ColumnarExchange (65)
                                     +- VeloxResizeBatches (64)
@@ -348,7 +348,7 @@ Input [6]: [gross_margin#22, i_category#10, i_class#9, 
t_category#23, t_class#24
 (67) InputIteratorTransformer
 Input [6]: [gross_margin#22, i_category#10, i_class#9, t_category#23, 
t_class#24, lochierarchy#25]
 
-(68) RegularHashAggregateExecTransformer
+(68) FlushableHashAggregateExecTransformer
 Input [6]: [gross_margin#22, i_category#10, i_class#9, t_category#23, 
t_class#24, lochierarchy#25]
 Keys [6]: [gross_margin#22, i_category#10, i_class#9, t_category#23, 
t_class#24, lochierarchy#25]
 Functions: []
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a/simplified.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a/simplified.txt
index 1429b04fd9..d5cc8efaac 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a/simplified.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q36a/simplified.txt
@@ -11,7 +11,7 @@ VeloxColumnarToRow
                     WholeStageCodegenTransformer (21)
                       ProjectExecTransformer 
[lochierarchy,_w0,gross_margin,i_category,i_class]
                         ProjectExecTransformer 
[gross_margin,i_category,i_class,lochierarchy,t_class]
-                          RegularHashAggregateExecTransformer 
[gross_margin,i_category,i_class,t_category,t_class,lochierarchy]
+                          FlushableHashAggregateExecTransformer 
[gross_margin,i_category,i_class,t_category,t_class,lochierarchy]
                             InputIteratorTransformer
                               InputAdapter
                                 ColumnarExchange 
[gross_margin,i_category,i_class,t_category,t_class,lochierarchy] #2
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a.sf100/explain.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a.sf100/explain.txt
index 8b62712d86..8ef5a37235 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a.sf100/explain.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a.sf100/explain.txt
@@ -9,7 +9,7 @@ VeloxColumnarToRow (106)
                   +- VeloxResizeBatches (97)
                      +- ^ ProjectExecTransformer (95)
                         +- ^ ProjectExecTransformer (94)
-                           +- ^ RegularHashAggregateExecTransformer (93)
+                           +- ^ FlushableHashAggregateExecTransformer (93)
                               +- ^ InputIteratorTransformer (92)
                                  +- ColumnarExchange (90)
                                     +- VeloxResizeBatches (89)
@@ -475,7 +475,7 @@ Input [6]: [total_sum#27, s_state#8, s_county#7, 
g_state#28, g_county#29, lochie
 (92) InputIteratorTransformer
 Input [6]: [total_sum#27, s_state#8, s_county#7, g_state#28, g_county#29, 
lochierarchy#30]
 
-(93) RegularHashAggregateExecTransformer
+(93) FlushableHashAggregateExecTransformer
 Input [6]: [total_sum#27, s_state#8, s_county#7, g_state#28, g_county#29, 
lochierarchy#30]
 Keys [6]: [total_sum#27, s_state#8, s_county#7, g_state#28, g_county#29, 
lochierarchy#30]
 Functions: []
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a.sf100/simplified.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a.sf100/simplified.txt
index 81dd34e12b..0823748825 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a.sf100/simplified.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a.sf100/simplified.txt
@@ -11,7 +11,7 @@ VeloxColumnarToRow
                     WholeStageCodegenTransformer (33)
                       ProjectExecTransformer 
[lochierarchy,_w0,total_sum,s_state,s_county]
                         ProjectExecTransformer 
[total_sum,s_state,s_county,lochierarchy,g_county]
-                          RegularHashAggregateExecTransformer 
[total_sum,s_state,s_county,g_state,g_county,lochierarchy]
+                          FlushableHashAggregateExecTransformer 
[total_sum,s_state,s_county,g_state,g_county,lochierarchy]
                             InputIteratorTransformer
                               InputAdapter
                                 ColumnarExchange 
[total_sum,s_state,s_county,g_state,g_county,lochierarchy] #2
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a/explain.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a/explain.txt
index 148593a512..823a0332a7 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a/explain.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a/explain.txt
@@ -9,7 +9,7 @@ VeloxColumnarToRow (106)
                   +- VeloxResizeBatches (97)
                      +- ^ ProjectExecTransformer (95)
                         +- ^ ProjectExecTransformer (94)
-                           +- ^ RegularHashAggregateExecTransformer (93)
+                           +- ^ FlushableHashAggregateExecTransformer (93)
                               +- ^ InputIteratorTransformer (92)
                                  +- ColumnarExchange (90)
                                     +- VeloxResizeBatches (89)
@@ -475,7 +475,7 @@ Input [6]: [total_sum#27, s_state#8, s_county#7, 
g_state#28, g_county#29, lochie
 (92) InputIteratorTransformer
 Input [6]: [total_sum#27, s_state#8, s_county#7, g_state#28, g_county#29, 
lochierarchy#30]
 
-(93) RegularHashAggregateExecTransformer
+(93) FlushableHashAggregateExecTransformer
 Input [6]: [total_sum#27, s_state#8, s_county#7, g_state#28, g_county#29, 
lochierarchy#30]
 Keys [6]: [total_sum#27, s_state#8, s_county#7, g_state#28, g_county#29, 
lochierarchy#30]
 Functions: []
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a/simplified.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a/simplified.txt
index 07d935f23b..f4b2f2aa2c 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a/simplified.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q70a/simplified.txt
@@ -11,7 +11,7 @@ VeloxColumnarToRow
                     WholeStageCodegenTransformer (33)
                       ProjectExecTransformer 
[lochierarchy,_w0,total_sum,s_state,s_county]
                         ProjectExecTransformer 
[total_sum,s_state,s_county,lochierarchy,g_county]
-                          RegularHashAggregateExecTransformer 
[total_sum,s_state,s_county,g_state,g_county,lochierarchy]
+                          FlushableHashAggregateExecTransformer 
[total_sum,s_state,s_county,g_state,g_county,lochierarchy]
                             InputIteratorTransformer
                               InputAdapter
                                 ColumnarExchange 
[total_sum,s_state,s_county,g_state,g_county,lochierarchy] #2
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a.sf100/explain.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a.sf100/explain.txt
index 24ec6ab60b..eaa13679e1 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a.sf100/explain.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a.sf100/explain.txt
@@ -9,7 +9,7 @@ VeloxColumnarToRow (72)
                   +- VeloxResizeBatches (63)
                      +- ^ ProjectExecTransformer (61)
                         +- ^ ProjectExecTransformer (60)
-                           +- ^ RegularHashAggregateExecTransformer (59)
+                           +- ^ FlushableHashAggregateExecTransformer (59)
                               +- ^ InputIteratorTransformer (58)
                                  +- ColumnarExchange (56)
                                     +- VeloxResizeBatches (55)
@@ -302,7 +302,7 @@ Input [6]: [total_sum#14, i_category#8, i_class#7, 
g_category#15, g_class#16, lo
 (58) InputIteratorTransformer
 Input [6]: [total_sum#14, i_category#8, i_class#7, g_category#15, g_class#16, 
lochierarchy#17]
 
-(59) RegularHashAggregateExecTransformer
+(59) FlushableHashAggregateExecTransformer
 Input [6]: [total_sum#14, i_category#8, i_class#7, g_category#15, g_class#16, 
lochierarchy#17]
 Keys [6]: [total_sum#14, i_category#8, i_class#7, g_category#15, g_class#16, 
lochierarchy#17]
 Functions: []
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a.sf100/simplified.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a.sf100/simplified.txt
index 2acb03c77a..92c4138a09 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a.sf100/simplified.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a.sf100/simplified.txt
@@ -11,7 +11,7 @@ VeloxColumnarToRow
                     WholeStageCodegenTransformer (18)
                       ProjectExecTransformer 
[lochierarchy,_w0,total_sum,i_category,i_class]
                         ProjectExecTransformer 
[total_sum,i_category,i_class,lochierarchy,g_class]
-                          RegularHashAggregateExecTransformer 
[total_sum,i_category,i_class,g_category,g_class,lochierarchy]
+                          FlushableHashAggregateExecTransformer 
[total_sum,i_category,i_class,g_category,g_class,lochierarchy]
                             InputIteratorTransformer
                               InputAdapter
                                 ColumnarExchange 
[total_sum,i_category,i_class,g_category,g_class,lochierarchy] #2
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a/explain.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a/explain.txt
index 24ec6ab60b..eaa13679e1 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a/explain.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a/explain.txt
@@ -9,7 +9,7 @@ VeloxColumnarToRow (72)
                   +- VeloxResizeBatches (63)
                      +- ^ ProjectExecTransformer (61)
                         +- ^ ProjectExecTransformer (60)
-                           +- ^ RegularHashAggregateExecTransformer (59)
+                           +- ^ FlushableHashAggregateExecTransformer (59)
                               +- ^ InputIteratorTransformer (58)
                                  +- ColumnarExchange (56)
                                     +- VeloxResizeBatches (55)
@@ -302,7 +302,7 @@ Input [6]: [total_sum#14, i_category#8, i_class#7, 
g_category#15, g_class#16, lo
 (58) InputIteratorTransformer
 Input [6]: [total_sum#14, i_category#8, i_class#7, g_category#15, g_class#16, 
lochierarchy#17]
 
-(59) RegularHashAggregateExecTransformer
+(59) FlushableHashAggregateExecTransformer
 Input [6]: [total_sum#14, i_category#8, i_class#7, g_category#15, g_class#16, 
lochierarchy#17]
 Keys [6]: [total_sum#14, i_category#8, i_class#7, g_category#15, g_class#16, 
lochierarchy#17]
 Functions: []
diff --git 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a/simplified.txt
 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a/simplified.txt
index 2acb03c77a..92c4138a09 100644
--- 
a/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a/simplified.txt
+++ 
b/gluten-ut/spark41/src/test/resources/backends-velox/tpcds-plan-stability/gluten-approved-plans-v2_7/q86a/simplified.txt
@@ -11,7 +11,7 @@ VeloxColumnarToRow
                     WholeStageCodegenTransformer (18)
                       ProjectExecTransformer 
[lochierarchy,_w0,total_sum,i_category,i_class]
                         ProjectExecTransformer 
[total_sum,i_category,i_class,lochierarchy,g_class]
-                          RegularHashAggregateExecTransformer 
[total_sum,i_category,i_class,g_category,g_class,lochierarchy]
+                          FlushableHashAggregateExecTransformer 
[total_sum,i_category,i_class,g_category,g_class,lochierarchy]
                             InputIteratorTransformer
                               InputAdapter
                                 ColumnarExchange 
[total_sum,i_category,i_class,g_category,g_class,lochierarchy] #2
diff --git 
a/tools/gluten-it/common/src/main/java/org/apache/gluten/integration/command/Parameterized.java
 
b/tools/gluten-it/common/src/main/java/org/apache/gluten/integration/command/Parameterized.java
index 80a5cb8ce1..77f26c3f0d 100644
--- 
a/tools/gluten-it/common/src/main/java/org/apache/gluten/integration/command/Parameterized.java
+++ 
b/tools/gluten-it/common/src/main/java/org/apache/gluten/integration/command/Parameterized.java
@@ -68,8 +68,8 @@ public class Parameterized implements Callable<Integer> {
   private String[] excludedDims = new String[0];
 
   private static final Pattern dimPattern1 =
-      Pattern.compile("([\\w-]+):([^,:]+)((?:,[^=,]+=[^=,]+)*)");
-  private static final Pattern dimPattern2 = 
Pattern.compile("([^,:]+)((?:,[^=,]+=[^=,]+)*)");
+      Pattern.compile("([\\w-]+):([^,:=]+)((?:,[^=,]+=[^=,]+)*)");
+  private static final Pattern dimPattern2 = 
Pattern.compile("([^,:=]+)((?:,[^=,]+=[^=,]+)*)");
 
   private static final Pattern excludedDimsPattern =
       Pattern.compile("[\\w-]+:[^,:]+(?:,[\\w-]+:[^,:]+)*");


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to