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

gabriellee pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new 122f36e5be [RuntimeFilter] (vec) support runtime filter in indeed slot 
id (#13556)
122f36e5be is described below

commit 122f36e5be910fe2f5193b7966105cc807d851ba
Author: HappenLee <happen...@hotmail.com>
AuthorDate: Fri Oct 21 21:41:23 2022 +0800

    [RuntimeFilter] (vec) support runtime filter in indeed slot id (#13556)
---
 fe/fe-core/src/main/java/org/apache/doris/analysis/Expr.java |  4 ++++
 .../src/main/java/org/apache/doris/analysis/SlotRef.java     | 12 ++++++++++++
 .../main/java/org/apache/doris/planner/RuntimeFilter.java    |  1 +
 3 files changed, 17 insertions(+)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/Expr.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/Expr.java
index 7bb85ab269..7753472864 100755
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/Expr.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/Expr.java
@@ -1207,6 +1207,10 @@ public abstract class Expr extends TreeNode<Expr> 
implements ParseNode, Cloneabl
         }
     }
 
+    public Expr getRealSlotRef() {
+        return this;
+    }
+
     public void getTableIdToColumnNames(Map<Long, Set<String>> 
tableIdToColumnNames) {
         Preconditions.checkState(tableIdToColumnNames != null);
         for (Expr child : children) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotRef.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotRef.java
index 746159a0b9..7ba05121c7 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotRef.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/SlotRef.java
@@ -358,6 +358,18 @@ public class SlotRef extends Expr {
         }
     }
 
+    @Override
+    public Expr getRealSlotRef() {
+        Preconditions.checkState(!type.equals(Type.INVALID));
+        Preconditions.checkState(desc != null);
+        if (!desc.getSourceExprs().isEmpty()
+                && desc.getSourceExprs().get(0) instanceof SlotRef) {
+            return desc.getSourceExprs().get(0);
+        } else {
+            return this;
+        }
+    }
+
     @Override
     public void getIds(List<TupleId> tupleIds, List<SlotId> slotIds) {
         Preconditions.checkState(!type.equals(Type.INVALID));
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/planner/RuntimeFilter.java 
b/fe/fe-core/src/main/java/org/apache/doris/planner/RuntimeFilter.java
index c3fec43021..13c74472ac 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/RuntimeFilter.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/RuntimeFilter.java
@@ -269,6 +269,7 @@ public final class RuntimeFilter {
             return null;
         }
 
+        targetExpr = targetExpr.getRealSlotRef();
         Map<TupleId, List<SlotId>> targetSlots = getTargetSlots(analyzer, 
targetExpr);
         Preconditions.checkNotNull(targetSlots);
         if (targetSlots.isEmpty()) {


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

Reply via email to