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

lijibing pushed a commit to branch high-priority-column
in repository https://gitbox.apache.org/repos/asf/doris.git

commit f74a4d07d83ac44df013bb75df8dd6d5f6f42701
Author: Jibing-Li <64681310+jibing...@users.noreply.github.com>
AuthorDate: Tue Mar 12 13:25:23 2024 +0800

    support window (#32094)
---
 .../rules/expression/HighPriorityColumnCollector.java       | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/HighPriorityColumnCollector.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/HighPriorityColumnCollector.java
index ed67ad97005..e20363b1202 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/HighPriorityColumnCollector.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/HighPriorityColumnCollector.java
@@ -34,6 +34,7 @@ import 
org.apache.doris.nereids.trees.plans.logical.LogicalHaving;
 import org.apache.doris.nereids.trees.plans.logical.LogicalJoin;
 import org.apache.doris.nereids.trees.plans.logical.LogicalOlapScan;
 import org.apache.doris.nereids.trees.plans.logical.LogicalProject;
+import org.apache.doris.nereids.trees.plans.logical.LogicalWindow;
 import org.apache.doris.nereids.trees.plans.visitor.CustomRewriter;
 import org.apache.doris.nereids.trees.plans.visitor.DefaultPlanRewriter;
 import org.apache.doris.qe.ConnectContext;
@@ -169,6 +170,18 @@ public class HighPriorityColumnCollector extends 
DefaultPlanRewriter<CollectorCo
         return filter;
     }
 
+    @Override
+    public Plan visitLogicalWindow(LogicalWindow<? extends Plan> window, 
CollectorContext context) {
+        window.child(0).accept(this, context);
+        context.usedInPredicate.addAll(window
+                .getWindowExpressions()
+                .stream()
+                .flatMap(e -> e.<Set<SlotReference>>collect(n -> n instanceof 
SlotReference).stream())
+                .flatMap(s -> backtrace(s, context).stream())
+                .collect(Collectors.toSet()));
+        return window;
+    }
+
     private Set<Slot> backtrace(Slot slot, CollectorContext context) {
         return backtrace(slot, new HashSet<>(), context);
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to