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" }