This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch branch-1.2-lts
in repository https://gitbox.apache.org/repos/asf/doris.git

commit 2761eb4fa0c0030ce2fa278449737f66089fd0fb
Author: starocean999 <[email protected]>
AuthorDate: Thu Apr 13 19:44:46 2023 +0800

    [fix](planner)keep all agg functions if there is any virtual slots in group 
by list (#18630)
    
    Because of the limitation of ProjectPlanner, we have to keep set agg 
functions materialized if there is any virtual slots in the group by list, such 
as 'GROUPING_ID' in the group by list etc.
---
 fe/fe-core/src/main/java/org/apache/doris/analysis/AggregateInfo.java | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/AggregateInfo.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/AggregateInfo.java
index 05d5284c08..84e9407693 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/AggregateInfo.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/AggregateInfo.java
@@ -888,13 +888,14 @@ public final class AggregateInfo extends 
AggregateInfoBase {
         int aggregateExprsSize = aggregateExprs.size();
         int groupExprsSize = groupingExprs.size();
         boolean isDistinctAgg = isDistinctAgg();
+        boolean hasVirtualSlot = groupingExprs.stream().anyMatch(expr -> expr 
instanceof VirtualSlotRef);
         for (int i = 0; i < aggregateExprsSize; ++i) {
             FunctionCallExpr functionCallExpr = aggregateExprs.get(i);
             SlotDescriptor slotDesc =
                     outputTupleDesc.getSlots().get(groupExprsSize + i);
             SlotDescriptor intermediateSlotDesc =
                     intermediateTupleDesc.getSlots().get(groupExprsSize + i);
-            if (isDistinctAgg || isUsingSetForDistinct) {
+            if (isDistinctAgg || isUsingSetForDistinct || hasVirtualSlot) {
                 slotDesc.setIsMaterialized(true);
                 intermediateSlotDesc.setIsMaterialized(true);
             }


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

Reply via email to