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

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


The following commit(s) were added to refs/heads/branch-4.1 by this push:
     new 45ebc2be1a7 branch-4.1: [fix](fe) Preserve operative slots when deep 
copying logical relations #63315 (#63709)
45ebc2be1a7 is described below

commit 45ebc2be1a7cc620a680cefeccb33ef456f923e9
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Fri May 29 16:54:40 2026 +0800

    branch-4.1: [fix](fe) Preserve operative slots when deep copying logical 
relations #63315 (#63709)
    
    Cherry-picked from #63315
    
    Co-authored-by: foxtail463 <[email protected]>
    Co-authored-by: yangtao555 <[email protected]>
---
 .../doris/nereids/trees/copier/LogicalPlanDeepCopier.java     |  2 +-
 .../doris/nereids/trees/copier/LogicalPlanDeepCopierTest.java | 11 +++++++++++
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/copier/LogicalPlanDeepCopier.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/copier/LogicalPlanDeepCopier.java
index 7fe2dd26ae0..0efa3d4e9f1 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/copier/LogicalPlanDeepCopier.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/copier/LogicalPlanDeepCopier.java
@@ -511,7 +511,7 @@ public class LogicalPlanDeepCopier extends 
DefaultPlanRewriter<DeepCopierContext
     private Plan updateOperativeSlots(LogicalCatalogRelation oldRelation, 
LogicalCatalogRelation newRelation) {
         List<Slot> oldOperativeSlots = oldRelation.getOperativeSlots();
         List<Slot> newOperativeSlots = new 
ArrayList<>(oldOperativeSlots.size());
-        int outputSize = oldOperativeSlots.size();
+        int outputSize = oldRelation.getOutput().size();
         for (Slot opSlot : oldOperativeSlots) {
             int idx;
             for (idx = 0; idx < outputSize; idx++) {
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/copier/LogicalPlanDeepCopierTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/copier/LogicalPlanDeepCopierTest.java
index 80842f6271b..98f07698a9e 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/copier/LogicalPlanDeepCopierTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/trees/copier/LogicalPlanDeepCopierTest.java
@@ -50,6 +50,17 @@ public class LogicalPlanDeepCopierTest {
         }
     }
 
+    @Test
+    public void testDeepCopyOlapScanWithNonFirstOperativeSlot() {
+        LogicalOlapScan relationPlan = PlanConstructor.newLogicalOlapScan(0, 
"a", 0);
+        relationPlan = (LogicalOlapScan) relationPlan.withOperativeSlots(
+                ImmutableList.of(relationPlan.getOutput().get(1)));
+        LogicalOlapScan aCopy =
+                (LogicalOlapScan) 
relationPlan.accept(LogicalPlanDeepCopier.INSTANCE, new DeepCopierContext());
+
+        Assertions.assertEquals(ImmutableList.of(aCopy.getOutput().get(1)), 
aCopy.getOperativeSlots());
+    }
+
     @Test
     public void testDeepCopyAggregateWithSourceRepeat() {
         LogicalOlapScan scan = PlanConstructor.newLogicalOlapScan(0, "t", 0);


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

Reply via email to