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