diff --git a/fe/.idea/vcs.xml b/fe/.idea/vcs.xml
index 7b2cdb1cbbd39a..8c0f59e92e6c5b 100644
--- a/fe/.idea/vcs.xml
+++ b/fe/.idea/vcs.xml
@@ -1,20 +1,4 @@
-
-
+
+
+
-
+
\ No newline at end of file
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterContext.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterContext.java
index 585ab5f3d7b081..6e6643140f8973 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterContext.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterContext.java
@@ -279,6 +279,10 @@ public Pair aliasTransferMapPut(NamedExpression slot, Pa
return aliasTransferMap.put(slot, pair);
}
+ public void aliasTransferMapRemove(NamedExpression slot) {
+ aliasTransferMap.remove(slot);
+ }
+
public boolean aliasTransferMapContains(NamedExpression slot) {
return aliasTransferMap.containsKey(slot);
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterGenerator.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterGenerator.java
index 57c322d030f8fe..176a795e4afa9a 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterGenerator.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/processor/post/RuntimeFilterGenerator.java
@@ -37,6 +37,7 @@
import org.apache.doris.nereids.trees.expressions.Slot;
import org.apache.doris.nereids.trees.expressions.SlotReference;
import org.apache.doris.nereids.trees.expressions.functions.scalar.BitmapContains;
+import org.apache.doris.nereids.trees.expressions.literal.Literal;
import org.apache.doris.nereids.trees.plans.AbstractPlan;
import org.apache.doris.nereids.trees.plans.JoinType;
import org.apache.doris.nereids.trees.plans.Plan;
@@ -440,6 +441,21 @@ public PhysicalPlan visitPhysicalProject(PhysicalProject extends Plan> project
if (expression.children().isEmpty()) {
continue;
}
+ /**
+ * join(#5=#6)
+ * -->project(null as #5)
+ * --> any
+ * -->project(#6)
+ * --->scan(T[#5, #6])
+ *
+ * both left tree and right tree contain exprId=5.
+ * remove #5 from alias map to avoid generate wrong rf
+ */
+ if (expression instanceof Alias && expression.child(0) instanceof Literal) {
+ Alias alias = (Alias) expression;
+ ctx.aliasTransferMapRemove(alias.toSlot());
+ continue;
+ }
Expression expr = ExpressionUtils.getSingleNumericSlotOrExpressionCoveredByCast(expression.child(0));
if (expr instanceof NamedExpression
&& ctx.aliasTransferMapContains((NamedExpression) expr)) {