Skip to content

Commit 158d1a1

Browse files
committed
SGA-12672 changed enum to bool, removed the object structure in the test and moved it to another test
1 parent 0ebcaae commit 158d1a1

File tree

9 files changed

+49
-90
lines changed

9 files changed

+49
-90
lines changed

src/ast/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ pub use self::query::{
9292
TableIndexType, TableSample, TableSampleBucket, TableSampleKind, TableSampleMethod,
9393
TableSampleModifier, TableSampleQuantity, TableSampleSeed, TableSampleSeedModifier,
9494
TableSampleUnit, TableVersion, TableWithJoins, Top, TopQuantity, UpdateTableFromKind,
95-
ValueTableMode, Values, ValuesKeyword, WildcardAdditionalOptions, With, WithFill,
95+
ValueTableMode, Values, WildcardAdditionalOptions, With, WithFill,
9696
XmlNamespaceDefinition, XmlPassingArgument, XmlPassingClause, XmlTableColumn,
9797
XmlTableColumnOption,
9898
};

src/ast/query.rs

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3137,30 +3137,16 @@ pub struct Values {
31373137
pub explicit_row: bool,
31383138
// MySql supports both VALUES and VALUE keywords.
31393139
// <https://dev.mysql.com/doc/refman/9.2/en/insert.html>
3140-
pub keyword: ValuesKeyword,
3140+
pub value_keyword: bool,
31413141
pub rows: Vec<Vec<Expr>>,
31423142
}
31433143

3144-
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
3145-
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
3146-
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
3147-
pub enum ValuesKeyword {
3148-
Values,
3149-
Value,
3150-
}
3151-
3152-
impl fmt::Display for ValuesKeyword {
3153-
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3154-
match self {
3155-
ValuesKeyword::Values => write!(f, "VALUES"),
3156-
ValuesKeyword::Value => write!(f, "VALUE"),
3157-
}
3158-
}
3159-
}
3160-
31613144
impl fmt::Display for Values {
31623145
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
3163-
write!(f, "{}", self.keyword)?;
3146+
match self.value_keyword {
3147+
true => f.write_str("VALUE")?,
3148+
false => f.write_str("VALUES")?,
3149+
};
31643150
let prefix = if self.explicit_row { "ROW" } else { "" };
31653151
let mut delim = "";
31663152
for row in &self.rows {

src/ast/spans.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ impl Spanned for Values {
223223
fn span(&self) -> Span {
224224
let Values {
225225
explicit_row: _, // bool,
226-
keyword: _,
226+
value_keyword: _,
227227
rows,
228228
} = self;
229229

src/parser/mod.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ use crate::ast::helpers::{
3939
stmt_create_table::{CreateTableBuilder, CreateTableConfiguration},
4040
};
4141
use crate::ast::Statement::CreatePolicy;
42-
use crate::ast::ValuesKeyword;
4342
use crate::ast::*;
4443
use crate::dialect::*;
4544
use crate::keywords::{Keyword, ALL_KEYWORDS};
@@ -12529,10 +12528,10 @@ impl<'a> Parser<'a> {
1252912528
SetExpr::Query(subquery)
1253012529
} else if self.parse_keyword(Keyword::VALUES) {
1253112530
let is_mysql = dialect_of!(self is MySqlDialect);
12532-
SetExpr::Values(self.parse_values(is_mysql, ValuesKeyword::Values)?)
12531+
SetExpr::Values(self.parse_values(is_mysql, false)?)
1253312532
} else if self.parse_keyword(Keyword::VALUE) {
1253412533
let is_mysql = dialect_of!(self is MySqlDialect);
12535-
SetExpr::Values(self.parse_values(is_mysql, ValuesKeyword::Value)?)
12534+
SetExpr::Values(self.parse_values(is_mysql, true)?)
1253612535
} else if self.parse_keyword(Keyword::TABLE) {
1253712536
SetExpr::Table(Box::new(self.parse_as_table()?))
1253812537
} else {
@@ -13836,7 +13835,7 @@ impl<'a> Parser<'a> {
1383613835
// Snowflake and Databricks allow syntax like below:
1383713836
// SELECT * FROM VALUES (1, 'a'), (2, 'b') AS t (col1, col2)
1383813837
// where there are no parentheses around the VALUES clause.
13839-
let values = SetExpr::Values(self.parse_values(false, ValuesKeyword::Values)?);
13838+
let values = SetExpr::Values(self.parse_values(false, false)?);
1384013839
let alias = self.maybe_parse_table_alias()?;
1384113840
Ok(TableFactor::Derived {
1384213841
lateral: false,
@@ -16506,7 +16505,7 @@ impl<'a> Parser<'a> {
1650616505
pub fn parse_values(
1650716506
&mut self,
1650816507
allow_empty: bool,
16509-
keyword: ValuesKeyword,
16508+
value_keyword: bool,
1651016509
) -> Result<Values, ParserError> {
1651116510
let mut explicit_row = false;
1651216511

@@ -16528,7 +16527,7 @@ impl<'a> Parser<'a> {
1652816527
Ok(Values {
1652916528
explicit_row,
1653016529
rows,
16531-
keyword,
16530+
value_keyword,
1653216531
})
1653316532
}
1653416533

@@ -16944,7 +16943,7 @@ impl<'a> Parser<'a> {
1694416943
MergeInsertKind::Row
1694516944
} else {
1694616945
self.expect_keyword_is(Keyword::VALUES)?;
16947-
let values = self.parse_values(is_mysql, ValuesKeyword::Values)?;
16946+
let values = self.parse_values(is_mysql, false)?;
1694816947
MergeInsertKind::Values(values)
1694916948
};
1695016949
MergeAction::Insert(MergeInsertExpr { columns, kind })

tests/sqlparser_bigquery.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1807,7 +1807,7 @@ fn parse_merge() {
18071807
let insert_action = MergeAction::Insert(MergeInsertExpr {
18081808
columns: vec![Ident::new("product"), Ident::new("quantity")],
18091809
kind: MergeInsertKind::Values(Values {
1810-
keyword: ValuesKeyword::Values,
1810+
value_keyword: false,
18111811
explicit_row: false,
18121812
rows: vec![vec![Expr::value(number("1")), Expr::value(number("2"))]],
18131813
}),
@@ -1952,7 +1952,7 @@ fn parse_merge() {
19521952
action: MergeAction::Insert(MergeInsertExpr {
19531953
columns: vec![Ident::new("a"), Ident::new("b"),],
19541954
kind: MergeInsertKind::Values(Values {
1955-
keyword: ValuesKeyword::Values,
1955+
value_keyword: false,
19561956
explicit_row: false,
19571957
rows: vec![vec![
19581958
Expr::value(number("1")),
@@ -1967,7 +1967,7 @@ fn parse_merge() {
19671967
action: MergeAction::Insert(MergeInsertExpr {
19681968
columns: vec![],
19691969
kind: MergeInsertKind::Values(Values {
1970-
keyword: ValuesKeyword::Values,
1970+
value_keyword: false,
19711971
explicit_row: false,
19721972
rows: vec![vec![
19731973
Expr::value(number("1")),

tests/sqlparser_common.rs

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -106,33 +106,44 @@ fn parse_insert_values() {
106106
let rows2 = vec![row.clone(), row];
107107

108108
let sql = "INSERT customer VALUES (1, 2, 3)";
109-
check_one(sql, "customer", &[], &rows1);
109+
check_one(sql, "customer", &[], &rows1, false);
110110

111111
let sql = "INSERT INTO customer VALUES (1, 2, 3)";
112-
check_one(sql, "customer", &[], &rows1);
112+
check_one(sql, "customer", &[], &rows1, false);
113113

114114
let sql = "INSERT INTO customer VALUES (1, 2, 3), (1, 2, 3)";
115-
check_one(sql, "customer", &[], &rows2);
115+
check_one(sql, "customer", &[], &rows2, false);
116116

117117
let sql = "INSERT INTO public.customer VALUES (1, 2, 3)";
118-
check_one(sql, "public.customer", &[], &rows1);
118+
check_one(sql, "public.customer", &[], &rows1, false);
119119

120120
let sql = "INSERT INTO db.public.customer VALUES (1, 2, 3)";
121-
check_one(sql, "db.public.customer", &[], &rows1);
121+
check_one(sql, "db.public.customer", &[], &rows1, false);
122122

123123
let sql = "INSERT INTO public.customer (id, name, active) VALUES (1, 2, 3)";
124124
check_one(
125125
sql,
126126
"public.customer",
127127
&["id".to_string(), "name".to_string(), "active".to_string()],
128128
&rows1,
129+
false,
130+
);
131+
132+
let sql = r"INSERT INTO t (id, name, active) VALUE (1, 2, 3)";
133+
check_one(
134+
sql,
135+
"t",
136+
&["id".to_string(), "name".to_string(), "active".to_string()],
137+
&rows1,
138+
true,
129139
);
130140

131141
fn check_one(
132142
sql: &str,
133143
expected_table_name: &str,
134144
expected_columns: &[String],
135145
expected_rows: &[Vec<Expr>],
146+
expected_value_keyword: bool,
136147
) {
137148
match verified_stmt(sql) {
138149
Statement::Insert(Insert {
@@ -147,8 +158,9 @@ fn parse_insert_values() {
147158
assert_eq!(column, &Ident::new(expected_columns[index].clone()));
148159
}
149160
match *source.body {
150-
SetExpr::Values(Values { rows, .. }) => {
151-
assert_eq!(rows.as_slice(), expected_rows)
161+
SetExpr::Values(Values { rows, value_keyword, .. }) => {
162+
assert_eq!(rows.as_slice(), expected_rows);
163+
assert!(value_keyword == expected_value_keyword);
152164
}
153165
_ => unreachable!(),
154166
}
@@ -9908,7 +9920,7 @@ fn parse_merge() {
99089920
action: MergeAction::Insert(MergeInsertExpr {
99099921
columns: vec![Ident::new("A"), Ident::new("B"), Ident::new("C")],
99109922
kind: MergeInsertKind::Values(Values {
9911-
keyword: ValuesKeyword::Values,
9923+
value_keyword: false,
99129924
explicit_row: false,
99139925
rows: vec![vec![
99149926
Expr::CompoundIdentifier(vec![

tests/sqlparser_databricks.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ fn test_databricks_lambdas() {
157157
#[test]
158158
fn test_values_clause() {
159159
let values = Values {
160-
keyword: ValuesKeyword::Values,
160+
value_keyword: false,
161161
explicit_row: false,
162162
rows: vec![
163163
vec![

tests/sqlparser_mysql.rs

Lines changed: 9 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1885,7 +1885,7 @@ fn parse_simple_insert() {
18851885
Some(Box::new(Query {
18861886
with: None,
18871887
body: Box::new(SetExpr::Values(Values {
1888-
keyword: ValuesKeyword::Values,
1888+
value_keyword: false,
18891889
explicit_row: false,
18901890
rows: vec![
18911891
vec![
@@ -1951,7 +1951,7 @@ fn parse_ignore_insert() {
19511951
Some(Box::new(Query {
19521952
with: None,
19531953
body: Box::new(SetExpr::Values(Values {
1954-
keyword: ValuesKeyword::Values,
1954+
value_keyword: false,
19551955
explicit_row: false,
19561956
rows: vec![vec![
19571957
Expr::Value(
@@ -2001,7 +2001,7 @@ fn parse_priority_insert() {
20012001
Some(Box::new(Query {
20022002
with: None,
20032003
body: Box::new(SetExpr::Values(Values {
2004-
keyword: ValuesKeyword::Values,
2004+
value_keyword: false,
20052005
explicit_row: false,
20062006
rows: vec![vec![
20072007
Expr::Value(
@@ -2048,7 +2048,7 @@ fn parse_priority_insert() {
20482048
Some(Box::new(Query {
20492049
with: None,
20502050
body: Box::new(SetExpr::Values(Values {
2051-
keyword: ValuesKeyword::Values,
2051+
value_keyword: false,
20522052
explicit_row: false,
20532053
rows: vec![vec![
20542054
Expr::Value(
@@ -2101,7 +2101,7 @@ fn parse_insert_as() {
21012101
Some(Box::new(Query {
21022102
with: None,
21032103
body: Box::new(SetExpr::Values(Values {
2104-
keyword: ValuesKeyword::Values,
2104+
value_keyword: false,
21052105
explicit_row: false,
21062106
rows: vec![vec![Expr::Value(
21072107
(Value::SingleQuotedString("2024-01-01".to_string())).with_empty_span()
@@ -2161,7 +2161,7 @@ fn parse_insert_as() {
21612161
Some(Box::new(Query {
21622162
with: None,
21632163
body: Box::new(SetExpr::Values(Values {
2164-
keyword: ValuesKeyword::Values,
2164+
value_keyword: false,
21652165
explicit_row: false,
21662166
rows: vec![vec![
21672167
Expr::value(number("1")),
@@ -2212,7 +2212,7 @@ fn parse_replace_insert() {
22122212
Some(Box::new(Query {
22132213
with: None,
22142214
body: Box::new(SetExpr::Values(Values {
2215-
keyword: ValuesKeyword::Values,
2215+
value_keyword: false,
22162216
explicit_row: false,
22172217
rows: vec![vec![
22182218
Expr::Value(
@@ -2260,7 +2260,7 @@ fn parse_empty_row_insert() {
22602260
Some(Box::new(Query {
22612261
with: None,
22622262
body: Box::new(SetExpr::Values(Values {
2263-
keyword: ValuesKeyword::Values,
2263+
value_keyword: false,
22642264
explicit_row: false,
22652265
rows: vec![vec![], vec![]]
22662266
})),
@@ -2311,7 +2311,7 @@ fn parse_insert_with_on_duplicate_update() {
23112311
Some(Box::new(Query {
23122312
with: None,
23132313
body: Box::new(SetExpr::Values(Values {
2314-
keyword: ValuesKeyword::Values,
2314+
value_keyword: false,
23152315
explicit_row: false,
23162316
rows: vec![vec![
23172317
Expr::Value(
@@ -4362,41 +4362,3 @@ fn test_create_index_options() {
43624362
"CREATE INDEX idx_name ON t(c1, c2) USING BTREE LOCK = EXCLUSIVE ALGORITHM = DEFAULT",
43634363
);
43644364
}
4365-
4366-
#[test]
4367-
fn test_insert_into_value() {
4368-
let sql = r"INSERT INTO t (id, name) VALUE ('AAA', 'BBB')";
4369-
match mysql_and_generic().verified_stmt(sql) {
4370-
Statement::Insert(Insert { source, .. }) => {
4371-
assert_eq!(
4372-
Some(Box::new(Query {
4373-
with: None,
4374-
body: Box::new(SetExpr::Values(Values {
4375-
keyword: ValuesKeyword::Value,
4376-
explicit_row: false,
4377-
rows: vec![vec![
4378-
Expr::Value(ValueWithSpan {
4379-
value: Value::SingleQuotedString("AAA".to_string()),
4380-
span: Span::empty(),
4381-
}),
4382-
Expr::Value(ValueWithSpan {
4383-
value: Value::SingleQuotedString("BBB".to_string()),
4384-
span: Span::empty(),
4385-
}),
4386-
]],
4387-
})),
4388-
order_by: None,
4389-
limit_clause: None,
4390-
fetch: None,
4391-
locks: vec![],
4392-
for_clause: None,
4393-
settings: None,
4394-
format_clause: None,
4395-
pipe_operators: vec![],
4396-
})),
4397-
source
4398-
);
4399-
}
4400-
_ => unreachable!(),
4401-
}
4402-
}

tests/sqlparser_postgres.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5169,7 +5169,7 @@ fn test_simple_postgres_insert_with_alias() {
51695169
source: Some(Box::new(Query {
51705170
with: None,
51715171
body: Box::new(SetExpr::Values(Values {
5172-
keyword: ValuesKeyword::Values,
5172+
value_keyword: false,
51735173
explicit_row: false,
51745174
rows: vec![vec![
51755175
Expr::Identifier(Ident::new("DEFAULT")),
@@ -5239,7 +5239,7 @@ fn test_simple_postgres_insert_with_alias() {
52395239
source: Some(Box::new(Query {
52405240
with: None,
52415241
body: Box::new(SetExpr::Values(Values {
5242-
keyword: ValuesKeyword::Values,
5242+
value_keyword: false,
52435243
explicit_row: false,
52445244
rows: vec![vec![
52455245
Expr::Identifier(Ident::new("DEFAULT")),
@@ -5311,7 +5311,7 @@ fn test_simple_insert_with_quoted_alias() {
53115311
source: Some(Box::new(Query {
53125312
with: None,
53135313
body: Box::new(SetExpr::Values(Values {
5314-
keyword: ValuesKeyword::Values,
5314+
value_keyword: false,
53155315
explicit_row: false,
53165316
rows: vec![vec![
53175317
Expr::Identifier(Ident::new("DEFAULT")),

0 commit comments

Comments
 (0)