diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/FillUpMissingSlots.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/FillUpMissingSlots.java index c05b1cdf5e..322a5b590e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/FillUpMissingSlots.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/FillUpMissingSlots.java @@ -115,7 +115,8 @@ public class FillUpMissingSlots implements AnalysisRuleFactory { if (notChanged && a.equals(agg)) { return null; } - return notChanged ? sort.withChildren(a) : new LogicalSort<>(newOrderKeys, a); + return notChanged ? sort.withChildren(sort.child().withChildren(a)) + : new LogicalSort<>(newOrderKeys, sort.child().withChildren(a)); }); }) ), diff --git a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/FillUpMissingSlotsTest.java b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/FillUpMissingSlotsTest.java index 51342b9dba..7cbafd8d5f 100644 --- a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/FillUpMissingSlotsTest.java +++ b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/analysis/FillUpMissingSlotsTest.java @@ -538,4 +538,11 @@ public class FillUpMissingSlotsTest extends AnalyzeCheckTestBase implements Memo .map(Alias::toSlot).collect(Collectors.toList())) )); } + + @Test + void testSortHavingAgg() { + String sql = "SELECT pk FROM t1 GROUP BY pk HAVING SUM(a1) > (SELECT AVG(a1) FROM t1) ORDER BY SUM(a1)"; + PlanChecker.from(connectContext).analyze(sql) + .matches(logicalFilter()); + } }