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

morrysnow 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 af7b3b81f78 [fix](Nereids) Make the case sensitivity of the result 
labels compatible with MySQL (#31510) (#31545)
af7b3b81f78 is described below

commit af7b3b81f7802852d1de9abcde2e30ff130d6a1a
Author: morrySnow <101034200+morrys...@users.noreply.github.com>
AuthorDate: Wed Feb 28 21:04:32 2024 +0800

    [fix](Nereids) Make the case sensitivity of the result labels compatible 
with MySQL (#31510) (#31545)
    
    pick from master #31510
    commit id a459e6f35a9ae4beabfb9e36fe29451b075fea93
    
    SQL: SELECT iD FROM t1
    before the label was: id
    after this PR the label will be: iD
---
 .../nereids/rules/analysis/CheckAfterRewrite.java    | 20 ++++++++++++--------
 .../doris/nereids/rules/analysis/SlotBinder.java     |  4 +++-
 .../trees/expressions/MarkJoinSlotReference.java     |  5 +++++
 3 files changed, 20 insertions(+), 9 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/CheckAfterRewrite.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/CheckAfterRewrite.java
index 26bb35192a1..0d7c953bb7f 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/CheckAfterRewrite.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/CheckAfterRewrite.java
@@ -105,14 +105,18 @@ public class CheckAfterRewrite extends 
OneAnalysisRuleFactory {
                 .collect(Collectors.toSet());
         notFromChildren = removeValidSlotsNotFromChildren(notFromChildren, 
childrenOutput);
         if (!notFromChildren.isEmpty()) {
-            throw new AnalysisException(String.format("Input slot(s) not in 
child's output: %s in plan: %s,"
-                            + " child output is: %s\n" + "plan tree:\n" + 
plan.treeString(),
-                    StringUtils.join(notFromChildren.stream()
-                            .map(ExpressionTrait::toString)
-                            .collect(Collectors.toSet()), ", "), plan,
-                    plan.children().stream()
-                            .flatMap(child -> child.getOutput().stream())
-                            .collect(Collectors.toSet())));
+            if (plan.arity() != 0 && plan.child(0) instanceof 
LogicalAggregate) {
+                throw new AnalysisException(String.format("%s not in agg's 
output", notFromChildren
+                        
.stream().map(NamedExpression::getName).collect(Collectors.joining(", "))));
+            } else {
+                throw new AnalysisException(String.format(
+                        "Input slot(s) not in child's output: %s in plan: %s,"
+                                + " child output is: %s\n" + "plan tree:\n" + 
plan.treeString(),
+                        
StringUtils.join(notFromChildren.stream().map(ExpressionTrait::toString)
+                                .collect(Collectors.toSet()), ", "),
+                        plan, plan.children().stream().flatMap(child -> 
child.getOutput().stream())
+                                .collect(Collectors.toSet())));
+            }
         }
     }
 
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/SlotBinder.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/SlotBinder.java
index ee5dddc5aa7..99d55423689 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/SlotBinder.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/SlotBinder.java
@@ -302,7 +302,9 @@ public class SlotBinder extends SubExprAnalyzer {
             //TODO: handle name parts more than three.
             throw new AnalysisException("Not supported name: "
                     + StringUtils.join(nameParts, "."));
-        }).collect(Collectors.toList());
+        })
+                .map(s -> 
s.withName(unboundSlot.getNameParts().get(unboundSlot.getNameParts().size() - 
1)))
+                .collect(Collectors.toList());
     }
 
     /**
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/MarkJoinSlotReference.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/MarkJoinSlotReference.java
index 021fcea1a3a..35b217b8a9e 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/MarkJoinSlotReference.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/MarkJoinSlotReference.java
@@ -73,4 +73,9 @@ public class MarkJoinSlotReference extends SlotReference 
implements SlotNotFromC
     public MarkJoinSlotReference withExprId(ExprId exprId) {
         return new MarkJoinSlotReference(exprId, name, existsHasAgg);
     }
+
+    @Override
+    public SlotReference withName(String name) {
+        return new MarkJoinSlotReference(exprId, name, existsHasAgg);
+    }
 }


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

Reply via email to