Skip to content

Commit bc8791c

Browse files
authored
Upgrade sqlparser-rs version to v0.40.0 (#1478)
ref. apache/datafusion-sqlparser-rs#1036
1 parent 608976b commit bc8791c

File tree

4 files changed

+37
-8
lines changed

4 files changed

+37
-8
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ iter-enum = "1"
2424
itertools = "0.12"
2525
serde = { version = "1", features = ["derive"] }
2626
serde_json = "1"
27-
sqlparser = { version = "0.39", features = ["serde", "bigdecimal"] }
27+
sqlparser = { version = "0.40", features = ["serde", "bigdecimal"] }
2828
thiserror = "1.0"
2929
strum_macros = "0.25"
3030
bigdecimal = { version = "0.4.1", features = ["serde", "string-only"] }

core/src/translate/error.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ pub enum TranslateError {
5151
#[error("unnamed function arg is not supported")]
5252
UnNamedFunctionArgNotSupported,
5353

54+
#[error("INSERT INTO {0} DEFAULT VALUES is not supported")]
55+
DefaultValuesOnInsertNotSupported(String),
56+
5457
#[error("empty function body is not supported")]
5558
UnsupportedEmptyFunctionBody,
5659

core/src/translate/mod.rs

Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,22 @@ pub fn translate(sql_statement: &SqlStatement) -> Result<Statement> {
3535
columns,
3636
source,
3737
..
38-
} => Ok(Statement::Insert {
39-
table_name: translate_object_name(table_name)?,
40-
columns: translate_idents(columns),
41-
source: translate_query(source)?,
42-
}),
38+
} => {
39+
let table_name = translate_object_name(table_name)?;
40+
let columns = translate_idents(columns);
41+
let source = source
42+
.as_deref()
43+
.ok_or_else(|| {
44+
TranslateError::DefaultValuesOnInsertNotSupported(table_name.clone()).into()
45+
})
46+
.and_then(translate_query)?;
47+
48+
Ok(Statement::Insert {
49+
table_name,
50+
columns,
51+
source,
52+
})
53+
}
4354
SqlStatement::Update {
4455
table,
4556
assignments,
@@ -294,3 +305,18 @@ fn translate_object_name(sql_object_name: &SqlObjectName) -> Result<String> {
294305
pub fn translate_idents(idents: &[SqlIdent]) -> Vec<String> {
295306
idents.iter().map(|v| v.value.to_owned()).collect()
296307
}
308+
309+
#[cfg(test)]
310+
mod tests {
311+
use {super::*, crate::parse_sql::parse};
312+
313+
#[test]
314+
fn statement() {
315+
let sql = "INSERT INTO Foo DEFAULT VALUES";
316+
let actual = parse(sql).and_then(|parsed| translate(&parsed[0]));
317+
let expected =
318+
Err(TranslateError::DefaultValuesOnInsertNotSupported("Foo".to_owned()).into());
319+
320+
assert_eq!(actual, expected);
321+
}
322+
}

0 commit comments

Comments
 (0)