You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datafusion.apache.org by gi...@apache.org on 2026/05/16 14:23:17 UTC
(datafusion) branch gh-readonly-queue/main/pr-22204-1ab146ad6cc119c7656ae1def75fd40697e5f94a created (now 3a49a2fec6)
This is an automated email from the ASF dual-hosted git repository.
github-merge-queue[bot] pushed a change to branch gh-readonly-queue/main/pr-22204-1ab146ad6cc119c7656ae1def75fd40697e5f94a
in repository https://gitbox.apache.org/repos/asf/datafusion.git
at 3a49a2fec6 fix: Handle EXECUTE without statement name (#22204)
This branch includes the following new commits:
new 3a49a2fec6 fix: Handle EXECUTE without statement name (#22204)
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datafusion.apache.org
For additional commands, e-mail: commits-help@datafusion.apache.org
(datafusion) 01/01: fix: Handle EXECUTE without statement name (#22204)
Posted by gi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
github-merge-queue[bot] pushed a commit to branch gh-readonly-queue/main/pr-22204-1ab146ad6cc119c7656ae1def75fd40697e5f94a
in repository https://gitbox.apache.org/repos/asf/datafusion.git
commit 3a49a2fec6abe41dd689f4e7c49721ce4119f51b
Author: Daniƫl Heres <da...@gmail.com>
AuthorDate: Sat May 16 16:22:56 2026 +0200
fix: Handle EXECUTE without statement name (#22204)
## Which issue does this PR close?
- Closes #22197.
## Rationale for this change
`EXEC()` and `EXECUTE()` can parse as `Statement::Execute` without a
statement name. The planner previously unwrapped that optional name and
panicked on user-supplied SQL.
## What changes are included in this PR?
- Return a planning error when `EXECUTE` has no statement name.
- Add sqllogictest coverage for the malformed `EXEC` / `EXECUTE` forms
from the issue.
## Are these changes tested?
- `cargo test -p datafusion-sqllogictest --test sqllogictests --
prepare`
- `cargo fmt --all`
- `cargo clippy --all-targets --all-features -- -D warnings`
## Are there any user-facing changes?
Malformed `EXEC` / `EXECUTE` statements without a name now return a
planning error instead of panicking.
---
datafusion/sql/src/statement.rs | 6 +++++-
datafusion/sqllogictest/test_files/prepare.slt | 19 +++++++++++++++++++
2 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/datafusion/sql/src/statement.rs b/datafusion/sql/src/statement.rs
index e7088c8a3d..8c94610f77 100644
--- a/datafusion/sql/src/statement.rs
+++ b/datafusion/sql/src/statement.rs
@@ -886,6 +886,10 @@ impl<S: ContextProvider> SqlToRel<'_, S> {
"Execute statement with DEFAULT is not supported"
);
}
+ let name = name.ok_or_else(|| {
+ plan_datafusion_err!("EXECUTE statement requires a name")
+ })?;
+
let empty_schema = DFSchema::empty();
let parameters = parameters
.into_iter()
@@ -893,7 +897,7 @@ impl<S: ContextProvider> SqlToRel<'_, S> {
.collect::<Result<Vec<Expr>>>()?;
Ok(LogicalPlan::Statement(PlanStatement::Execute(Execute {
- name: object_name_to_string(&name.unwrap()),
+ name: object_name_to_string(&name),
parameters,
})))
}
diff --git a/datafusion/sqllogictest/test_files/prepare.slt b/datafusion/sqllogictest/test_files/prepare.slt
index 8e8b1cd8e6..16e41834a3 100644
--- a/datafusion/sqllogictest/test_files/prepare.slt
+++ b/datafusion/sqllogictest/test_files/prepare.slt
@@ -53,6 +53,25 @@ PREPARE my_plan(INT, INT) AS SELECT 1 + $1;
statement error SQL error: ParserError
PREPARE my_plan(INT) AS SELECT id, age FROM person WHERE age is $1;
+# EXEC/EXECUTE with parentheses but no statement name must error instead of panic
+statement error EXECUTE statement requires a name
+EXEC();
+
+statement error EXECUTE statement requires a name
+EXEC('');
+
+statement error EXECUTE statement requires a name
+EXEC('any-string');
+
+statement error EXECUTE statement requires a name
+EXEC(unknown_column);
+
+statement error EXECUTE statement requires a name
+EXECUTE();
+
+statement error EXECUTE statement requires a name
+EXEC ('a');
+
# #######################
# Test prepare and execute statements
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datafusion.apache.org
For additional commands, e-mail: commits-help@datafusion.apache.org