Skip to content

Commit 2ef95a6

Browse files
authored
fix(query): forbid explain explain statement (#16654)
fix(query): forbiden explain explain statement
1 parent 4b8b96e commit 2ef95a6

File tree

3 files changed

+18
-0
lines changed

3 files changed

+18
-0
lines changed

src/query/sql/src/planner/binder/binder.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,9 @@ impl<'a> Binder {
212212
}
213213

214214
Statement::ExplainAnalyze {partial, graphical, query } => {
215+
if let Statement::Explain { .. } | Statement::ExplainAnalyze { .. } = query.as_ref() {
216+
return Err(ErrorCode::SyntaxException("Invalid statement"));
217+
}
215218
let plan = self.bind_statement(bind_context, query).await?;
216219
Plan::ExplainAnalyze { partial: *partial, graphical: *graphical, plan: Box::new(plan) }
217220
}

src/query/sql/src/planner/binder/explain.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,9 @@ impl Binder {
7676
inner: &Statement,
7777
) -> Result<Plan> {
7878
let mut builder = ExplainConfigBuilder::new();
79+
if let Statement::Explain { .. } | Statement::ExplainAnalyze { .. } = inner {
80+
return Err(ErrorCode::SyntaxException("Invalid statement"));
81+
}
7982

8083
// Rewrite `EXPLAIN RAW` to `EXPLAIN(LOGICAL)`
8184
if matches!(kind, ExplainKind::Raw) {

tests/sqllogictests/suites/mode/standalone/explain/explain.test

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,18 @@ create table t1 as select number as a, number as b from numbers(1)
1010
statement ok
1111
create table t2 as select number as a, number as b from numbers(5)
1212

13+
statement error 1005
14+
explain explain select t1.a from t1 where a > 0
15+
16+
statement error 1005
17+
explain explain analyze select t1.a from t1 where a > 0
18+
19+
statement error 1005
20+
explain analyze explain select t1.a from t1 where a > 0
21+
22+
statement error 1005
23+
explain analyze explain analyze select t1.a from t1 where a > 0
24+
1325
query T
1426
explain select t1.a from t1 where a > 0
1527
----

0 commit comments

Comments
 (0)