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 2025/09/16 18:22:17 UTC
(datafusion-sqlparser-rs) branch gh-readonly-queue/main/pr-2028-e3fbfd91b29706fcc7b4847f13ba71946a68e1f0 created (now 70215614)
This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a change to branch gh-readonly-queue/main/pr-2028-e3fbfd91b29706fcc7b4847f13ba71946a68e1f0
in repository https://gitbox.apache.org/repos/asf/datafusion-sqlparser-rs.git
at 70215614 Implemented the `From` method for all clear variants in Statement (#2028)
This branch includes the following new commits:
new 70215614 Implemented the `From` method for all clear variants in Statement (#2028)
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-sqlparser-rs) 01/01: Implemented the `From` method for all clear variants in Statement (#2028)
Posted by gi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch gh-readonly-queue/main/pr-2028-e3fbfd91b29706fcc7b4847f13ba71946a68e1f0
in repository https://gitbox.apache.org/repos/asf/datafusion-sqlparser-rs.git
commit 70215614747d17ed47234fc0bab85fecfcda1c9a
Author: Luca Cappelletti <ca...@gmail.com>
AuthorDate: Tue Sep 16 20:21:55 2025 +0200
Implemented the `From` method for all clear variants in Statement (#2028)
---
src/ast/helpers/stmt_create_table.rs | 5 +-
src/ast/mod.rs | 207 +++++++++++++++++++++++++++++++++--
src/dialect/mssql.rs | 10 +-
3 files changed, 208 insertions(+), 14 deletions(-)
diff --git a/src/ast/helpers/stmt_create_table.rs b/src/ast/helpers/stmt_create_table.rs
index fc000269..fe950c90 100644
--- a/src/ast/helpers/stmt_create_table.rs
+++ b/src/ast/helpers/stmt_create_table.rs
@@ -432,7 +432,7 @@ impl CreateTableBuilder {
}
pub fn build(self) -> Statement {
- Statement::CreateTable(CreateTable {
+ CreateTable {
or_replace: self.or_replace,
temporary: self.temporary,
external: self.external,
@@ -484,7 +484,8 @@ impl CreateTableBuilder {
refresh_mode: self.refresh_mode,
initialize: self.initialize,
require_user: self.require_user,
- })
+ }
+ .into()
}
}
diff --git a/src/ast/mod.rs b/src/ast/mod.rs
index 6efe1f74..8df636f8 100644
--- a/src/ast/mod.rs
+++ b/src/ast/mod.rs
@@ -21,6 +21,7 @@ use alloc::{
boxed::Box,
format,
string::{String, ToString},
+ vec,
vec::Vec,
};
use helpers::{
@@ -3029,14 +3030,6 @@ impl Display for Set {
}
}
-/// Convert a `Set` into a `Statement`.
-/// Convenience function, instead of writing `Statement::Set(Set::Set...{...})`
-impl From<Set> for Statement {
- fn from(set: Set) -> Self {
- Statement::Set(set)
- }
-}
-
/// A representation of a `WHEN` arm with all the identifiers catched and the statements to execute
/// for the arm.
///
@@ -10707,6 +10700,204 @@ impl fmt::Display for VacuumStatement {
}
}
+impl From<Set> for Statement {
+ fn from(s: Set) -> Self {
+ Self::Set(s)
+ }
+}
+
+impl From<Query> for Statement {
+ fn from(q: Query) -> Self {
+ Box::new(q).into()
+ }
+}
+
+impl From<Box<Query>> for Statement {
+ fn from(q: Box<Query>) -> Self {
+ Self::Query(q)
+ }
+}
+
+impl From<Insert> for Statement {
+ fn from(i: Insert) -> Self {
+ Self::Insert(i)
+ }
+}
+
+impl From<CaseStatement> for Statement {
+ fn from(c: CaseStatement) -> Self {
+ Self::Case(c)
+ }
+}
+
+impl From<IfStatement> for Statement {
+ fn from(i: IfStatement) -> Self {
+ Self::If(i)
+ }
+}
+
+impl From<WhileStatement> for Statement {
+ fn from(w: WhileStatement) -> Self {
+ Self::While(w)
+ }
+}
+
+impl From<RaiseStatement> for Statement {
+ fn from(r: RaiseStatement) -> Self {
+ Self::Raise(r)
+ }
+}
+
+impl From<Function> for Statement {
+ fn from(f: Function) -> Self {
+ Self::Call(f)
+ }
+}
+
+impl From<OpenStatement> for Statement {
+ fn from(o: OpenStatement) -> Self {
+ Self::Open(o)
+ }
+}
+
+impl From<Delete> for Statement {
+ fn from(d: Delete) -> Self {
+ Self::Delete(d)
+ }
+}
+
+impl From<CreateTable> for Statement {
+ fn from(c: CreateTable) -> Self {
+ Self::CreateTable(c)
+ }
+}
+
+impl From<CreateIndex> for Statement {
+ fn from(c: CreateIndex) -> Self {
+ Self::CreateIndex(c)
+ }
+}
+
+impl From<CreateServerStatement> for Statement {
+ fn from(c: CreateServerStatement) -> Self {
+ Self::CreateServer(c)
+ }
+}
+
+impl From<CreateConnector> for Statement {
+ fn from(c: CreateConnector) -> Self {
+ Self::CreateConnector(c)
+ }
+}
+
+impl From<AlterSchema> for Statement {
+ fn from(a: AlterSchema) -> Self {
+ Self::AlterSchema(a)
+ }
+}
+
+impl From<AlterType> for Statement {
+ fn from(a: AlterType) -> Self {
+ Self::AlterType(a)
+ }
+}
+
+impl From<DropDomain> for Statement {
+ fn from(d: DropDomain) -> Self {
+ Self::DropDomain(d)
+ }
+}
+
+impl From<ShowCharset> for Statement {
+ fn from(s: ShowCharset) -> Self {
+ Self::ShowCharset(s)
+ }
+}
+
+impl From<ShowObjects> for Statement {
+ fn from(s: ShowObjects) -> Self {
+ Self::ShowObjects(s)
+ }
+}
+
+impl From<Use> for Statement {
+ fn from(u: Use) -> Self {
+ Self::Use(u)
+ }
+}
+
+impl From<CreateFunction> for Statement {
+ fn from(c: CreateFunction) -> Self {
+ Self::CreateFunction(c)
+ }
+}
+
+impl From<CreateTrigger> for Statement {
+ fn from(c: CreateTrigger) -> Self {
+ Self::CreateTrigger(c)
+ }
+}
+
+impl From<DropTrigger> for Statement {
+ fn from(d: DropTrigger) -> Self {
+ Self::DropTrigger(d)
+ }
+}
+
+impl From<DenyStatement> for Statement {
+ fn from(d: DenyStatement) -> Self {
+ Self::Deny(d)
+ }
+}
+
+impl From<CreateDomain> for Statement {
+ fn from(c: CreateDomain) -> Self {
+ Self::CreateDomain(c)
+ }
+}
+
+impl From<RenameTable> for Statement {
+ fn from(r: RenameTable) -> Self {
+ vec![r].into()
+ }
+}
+
+impl From<Vec<RenameTable>> for Statement {
+ fn from(r: Vec<RenameTable>) -> Self {
+ Self::RenameTable(r)
+ }
+}
+
+impl From<PrintStatement> for Statement {
+ fn from(p: PrintStatement) -> Self {
+ Self::Print(p)
+ }
+}
+
+impl From<ReturnStatement> for Statement {
+ fn from(r: ReturnStatement) -> Self {
+ Self::Return(r)
+ }
+}
+
+impl From<ExportData> for Statement {
+ fn from(e: ExportData) -> Self {
+ Self::ExportData(e)
+ }
+}
+
+impl From<CreateUser> for Statement {
+ fn from(c: CreateUser) -> Self {
+ Self::CreateUser(c)
+ }
+}
+
+impl From<VacuumStatement> for Statement {
+ fn from(v: VacuumStatement) -> Self {
+ Self::Vacuum(v)
+ }
+}
+
#[cfg(test)]
mod tests {
use crate::tokenizer::Location;
diff --git a/src/dialect/mssql.rs b/src/dialect/mssql.rs
index 15946d5d..4fcc0e4b 100644
--- a/src/dialect/mssql.rs
+++ b/src/dialect/mssql.rs
@@ -226,12 +226,13 @@ impl MsSqlDialect {
parser.prev_token();
}
- Ok(Statement::If(IfStatement {
+ Ok(IfStatement {
if_block,
else_block,
elseif_blocks: Vec::new(),
end_token: None,
- }))
+ }
+ .into())
}
/// Parse `CREATE TRIGGER` for [MsSql]
@@ -251,7 +252,7 @@ impl MsSqlDialect {
parser.expect_keyword_is(Keyword::AS)?;
let statements = Some(parser.parse_conditional_statements(&[Keyword::END])?);
- Ok(Statement::CreateTrigger(CreateTrigger {
+ Ok(CreateTrigger {
or_alter,
or_replace: false,
is_constraint: false,
@@ -269,7 +270,8 @@ impl MsSqlDialect {
statements_as: true,
statements,
characteristics: None,
- }))
+ }
+ .into())
}
/// Parse a sequence of statements, optionally separated by semicolon.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datafusion.apache.org
For additional commands, e-mail: commits-help@datafusion.apache.org