From c259404ac20a2099839f7f0bb58a9065040e1b28 Mon Sep 17 00:00:00 2001 From: sundyli <543950155@qq.com> Date: Fri, 7 Feb 2025 10:23:56 +0800 Subject: [PATCH] fix(query): group checker subquery --- src/query/sql/src/planner/semantic/grouping_check.rs | 11 +++++------ tests/sqllogictests/suites/query/aggregate.test | 3 +++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/query/sql/src/planner/semantic/grouping_check.rs b/src/query/sql/src/planner/semantic/grouping_check.rs index 21ff5b7bc06a3..330c52243103c 100644 --- a/src/query/sql/src/planner/semantic/grouping_check.rs +++ b/src/query/sql/src/planner/semantic/grouping_check.rs @@ -20,7 +20,6 @@ use crate::binder::Visibility; use crate::plans::walk_expr_mut; use crate::plans::BoundColumnRef; use crate::plans::ScalarExpr; -use crate::plans::SubqueryExpr; use crate::plans::VisitorMut; use crate::BindContext; @@ -176,6 +175,11 @@ impl VisitorMut<'_> for GroupingChecker<'_> { return Ok(()); } } + ScalarExpr::SubqueryExpr(q) => { + if let Some(c) = q.child_expr.as_mut() { + self.visit(c.as_mut())?; + } + } _ => {} } @@ -200,9 +204,4 @@ impl VisitorMut<'_> for GroupingChecker<'_> { )) .set_span(column.span)) } - - fn visit_subquery_expr(&mut self, _: &mut SubqueryExpr) -> Result<()> { - // TODO(leiysky): check subquery in the future - Ok(()) - } } diff --git a/tests/sqllogictests/suites/query/aggregate.test b/tests/sqllogictests/suites/query/aggregate.test index 73f5b582ac941..5d61c9c258061 100644 --- a/tests/sqllogictests/suites/query/aggregate.test +++ b/tests/sqllogictests/suites/query/aggregate.test @@ -36,6 +36,9 @@ select a, sum(sum) as sum from (select a, sum(a) as sum from t group by a, b) as 1 2 2 4 +statement error must appear in the GROUP BY clause or be used in an aggregate function +SELECT max(a) FROM t GROUP BY a HAVING b NOT IN(SELECT 3 AS c); + statement ok drop table t