From acac3c5cc1fc9d6dc42758705939eb1e39092335 Mon Sep 17 00:00:00 2001 From: starocean999 <12095047@qq.com> Date: Tue, 10 Sep 2024 10:15:45 +0800 Subject: [PATCH] fix failed case --- .../apache/doris/nereids/rules/analysis/SubExprAnalyzer.java | 4 +++- .../nereids_p0/subquery/correlated_scalar_subquery.groovy | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/SubExprAnalyzer.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/SubExprAnalyzer.java index 103b02cba50eaab..7b0ed45708251da 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/SubExprAnalyzer.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/SubExprAnalyzer.java @@ -129,7 +129,9 @@ public Expression visitScalarSubquery(ScalarSubquery scalar, T context) { if (analyzedSubqueryPlan instanceof LogicalLimit) { LogicalLimit limit = (LogicalLimit) analyzedSubqueryPlan; if (limit.getOffset() == 0 && limit.getLimit() == 1) { - analyzedSubqueryPlan = (LogicalPlan) analyzedSubqueryPlan.child(0); + // skip useless limit node + analyzedResult = new AnalyzedResult((LogicalPlan) analyzedSubqueryPlan.child(0), + analyzedResult.correlatedSlots); } else { throw new AnalysisException("limit is not supported in correlated subquery " + analyzedResult.getLogicalPlan()); diff --git a/regression-test/suites/nereids_p0/subquery/correlated_scalar_subquery.groovy b/regression-test/suites/nereids_p0/subquery/correlated_scalar_subquery.groovy index ff32078a8a24bac..80d9cdb4bb2322f 100644 --- a/regression-test/suites/nereids_p0/subquery/correlated_scalar_subquery.groovy +++ b/regression-test/suites/nereids_p0/subquery/correlated_scalar_subquery.groovy @@ -118,7 +118,7 @@ suite("correlated_scalar_subquery") { test { sql """ - select c1 from correlated_scalar_t1 where correlated_scalar_t1.c2 > (select c1 from correlated_scalar_t2 where correlated_scalar_t1.c1 = correlated_scalar_t2.c1 limit 1); + select c1 from correlated_scalar_t1 where correlated_scalar_t1.c2 > (select c1 from correlated_scalar_t2 where correlated_scalar_t1.c1 = correlated_scalar_t2.c1 limit 2); """ exception "limit is not supported in correlated subquery" }