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

kxiao pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new ad7c6bf7f8f [fix](nereids)add visitMarkJoinReference method in 
ExpressionDeepCopier #25874 (#26688)
ad7c6bf7f8f is described below

commit ad7c6bf7f8f81a2aaaac8259e8800611c1b2eacf
Author: starocean999 <[email protected]>
AuthorDate: Thu Nov 9 23:34:32 2023 +0800

    [fix](nereids)add visitMarkJoinReference method in ExpressionDeepCopier 
#25874 (#26688)
---
 .../doris/nereids/trees/copier/ExpressionDeepCopier.java      | 11 +++++------
 .../nereids/trees/expressions/visitor/ExpressionVisitor.java  |  2 +-
 regression-test/data/nereids_p0/subquery/test_subquery.out    |  3 +++
 .../suites/nereids_p0/subquery/test_subquery.groovy           |  2 ++
 4 files changed, 11 insertions(+), 7 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/copier/ExpressionDeepCopier.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/copier/ExpressionDeepCopier.java
index 84cdb9cbaae..61da29d642a 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/copier/ExpressionDeepCopier.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/copier/ExpressionDeepCopier.java
@@ -70,15 +70,14 @@ public class ExpressionDeepCopier extends 
DefaultExpressionRewriter<DeepCopierCo
     @Override
     public Expression visitSlotReference(SlotReference slotReference, 
DeepCopierContext context) {
         Map<ExprId, ExprId> exprIdReplaceMap = context.exprIdReplaceMap;
+        ExprId newExprId;
         if (exprIdReplaceMap.containsKey(slotReference.getExprId())) {
-            ExprId newExprId = exprIdReplaceMap.get(slotReference.getExprId());
-            return slotReference.withExprId(newExprId);
+            newExprId = exprIdReplaceMap.get(slotReference.getExprId());
         } else {
-            SlotReference newOne = new SlotReference(slotReference.getName(), 
slotReference.getDataType(),
-                    slotReference.nullable(), slotReference.getQualifier());
-            exprIdReplaceMap.put(slotReference.getExprId(), 
newOne.getExprId());
-            return newOne;
+            newExprId = StatementScopeIdGenerator.newExprId();
+            exprIdReplaceMap.put(slotReference.getExprId(), newExprId);
         }
+        return slotReference.withExprId(newExprId);
     }
 
     @Override
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ExpressionVisitor.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ExpressionVisitor.java
index ffba3bb1f4d..4d89227ee9f 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ExpressionVisitor.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/visitor/ExpressionVisitor.java
@@ -407,7 +407,7 @@ public abstract class ExpressionVisitor<R, C>
     }
 
     public R visitVirtualReference(VirtualSlotReference virtualSlotReference, 
C context) {
-        return visit(virtualSlotReference, context);
+        return visitSlotReference(virtualSlotReference, context);
     }
 
     public R visitVariableDesc(VariableDesc variableDesc, C context) {
diff --git a/regression-test/data/nereids_p0/subquery/test_subquery.out 
b/regression-test/data/nereids_p0/subquery/test_subquery.out
index 284361624e6..2344cedddd5 100644
--- a/regression-test/data/nereids_p0/subquery/test_subquery.out
+++ b/regression-test/data/nereids_p0/subquery/test_subquery.out
@@ -23,3 +23,6 @@ true  15      1992    3021    11011920        0.000   true    
9999-12-12      2015-04-02T00:00                3.141592653     2
 -- !sql_subquery_one_row_relation --
 1
 
+-- !sql_mark_join --
+1
+
diff --git a/regression-test/suites/nereids_p0/subquery/test_subquery.groovy 
b/regression-test/suites/nereids_p0/subquery/test_subquery.groovy
index 2f9962d9216..1c2dd55676d 100644
--- a/regression-test/suites/nereids_p0/subquery/test_subquery.groovy
+++ b/regression-test/suites/nereids_p0/subquery/test_subquery.groovy
@@ -84,5 +84,7 @@ suite("test_subquery") {
 
     qt_sql_subquery_one_row_relation """select * from test_one_row_relation;"""
 
+    qt_sql_mark_join """with A as (select count(*) n1 from 
test_one_row_relation where exists (select 1 from test_one_row_relation t where 
t.user_id = test_one_row_relation.user_id) or 1 = 1) select * from A;"""
+
     sql """drop table if exists test_one_row_relation;"""
 }


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

Reply via email to