Skip to content

Commit 3e19ae2

Browse files
committed
Revert "[SIG-43218] support for snowflake EXCLUDE wildcard modifier (#11)"
This reverts commit e174e14.
1 parent 2db644f commit 3e19ae2

9 files changed

Lines changed: 39 additions & 116 deletions

File tree

src/ast/query.rs

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -228,7 +228,6 @@ pub enum SelectItem {
228228
Wildcard {
229229
prefix: Option<ObjectName>,
230230
except: Vec<Ident>,
231-
exclude: Vec<Ident>, // Snowflake's flavor of EXCEPT
232231
replace: Vec<(Expr, Ident)>,
233232
},
234233
}
@@ -241,7 +240,6 @@ impl fmt::Display for SelectItem {
241240
SelectItem::Wildcard {
242241
prefix,
243242
except,
244-
exclude,
245243
replace,
246244
} => {
247245
if let Some(pre) = prefix {
@@ -259,19 +257,6 @@ impl fmt::Display for SelectItem {
259257
write!(f, ")")?;
260258
}
261259
delim = "";
262-
if !exclude.is_empty() {
263-
write!(f, " EXCLUDE ")?;
264-
if exclude.len() == 1 {
265-
write!(f, "{}", exclude[0])?;
266-
} else {
267-
write!(f, "(")?;
268-
for col in exclude {
269-
write!(f, "{}{}", delim, col)?;
270-
delim = ", ";
271-
}
272-
write!(f, ")")?;
273-
}
274-
}
275260
if !replace.is_empty() {
276261
write!(f, " REPLACE (")?;
277262
for &(ref expr, ref alias) in replace.iter() {

src/dialect/keywords.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,6 @@ define_keywords!(
201201
ESCAPE,
202202
EVERY,
203203
EXCEPT,
204-
EXCLUDE,
205204
EXEC,
206205
EXECUTE,
207206
EXISTS,

src/parser.rs

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ pub enum ParserError {
2828
}
2929

3030
pub type WildcardExcept = Vec<Ident>;
31-
pub type WildcardExclude = Vec<Ident>;
3231
pub type WildcardReplace = Vec<(Expr, Ident)>;
3332

3433
// Use `Parser::expected` instead, if possible
@@ -2872,19 +2871,17 @@ impl<'a> Parser<'a> {
28722871
pub fn parse_select_item(&mut self) -> Result<SelectItem, ParserError> {
28732872
let expr = self.parse_expr()?;
28742873
if let Expr::Wildcard = expr {
2875-
let (except, exclude, replace) = self.parse_wildcard_modifiers()?;
2874+
let (except, replace) = self.parse_wildcard_modifiers()?;
28762875
Ok(SelectItem::Wildcard {
28772876
prefix: None,
28782877
except,
2879-
exclude,
28802878
replace,
28812879
})
28822880
} else if let Expr::QualifiedWildcard(prefix) = expr {
2883-
let (except, exclude, replace) = self.parse_wildcard_modifiers()?;
2881+
let (except, replace) = self.parse_wildcard_modifiers()?;
28842882
Ok(SelectItem::Wildcard {
28852883
prefix: Some(ObjectName(prefix)),
28862884
except,
2887-
exclude,
28882885
replace,
28892886
})
28902887
} else {
@@ -2911,7 +2908,7 @@ impl<'a> Parser<'a> {
29112908

29122909
pub fn parse_wildcard_modifiers(
29132910
&mut self,
2914-
) -> Result<(WildcardExcept, WildcardExclude, WildcardReplace), ParserError> {
2911+
) -> Result<(WildcardExcept, WildcardReplace), ParserError> {
29152912
let except = if self.parse_keyword(Keyword::EXCEPT) {
29162913
self.expect_token(&Token::LParen)?;
29172914
let aliases = self.parse_comma_separated(Parser::parse_identifier)?;
@@ -2920,26 +2917,15 @@ impl<'a> Parser<'a> {
29202917
} else {
29212918
vec![]
29222919
};
2923-
let exclude = if self.parse_keyword(Keyword::EXCLUDE) {
2924-
if self.consume_token(&Token::LParen) {
2925-
let aliases = self.parse_comma_separated(Parser::parse_identifier)?;
2926-
self.expect_token(&Token::RParen)?;
2927-
aliases
2928-
} else {
2929-
vec![self.parse_identifier()?]
2930-
}
2931-
} else {
2932-
vec![]
2933-
};
2934-
let replace = if self.parse_keyword(Keyword::REPLACE) {
2920+
let replace = if self.parse_keyword(Keyword::EXCEPT) {
29352921
self.expect_token(&Token::LParen)?;
29362922
let replace = self.parse_comma_separated(Parser::parse_replace_item)?;
29372923
self.expect_token(&Token::RParen)?;
29382924
replace
29392925
} else {
29402926
vec![]
29412927
};
2942-
Ok((except, exclude, replace))
2928+
Ok((except, replace))
29432929
}
29442930

29452931
/// Parse an expression, optionally followed by ASC or DESC (used in ORDER BY)

tests/queries/bigquery/wildcard_modifiers_except.sql

Lines changed: 0 additions & 4 deletions
This file was deleted.

tests/queries/snowflake/wildcard_modifiers_exclude.sql

Lines changed: 0 additions & 6 deletions
This file was deleted.

tests/queries/snowflake/wildcard_modifiers_replace.sql

Lines changed: 0 additions & 4 deletions
This file was deleted.

tests/sqlparser_common.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -273,7 +273,6 @@ fn parse_select_wildcard() {
273273
&SelectItem::Wildcard {
274274
prefix: None,
275275
except: vec![],
276-
exclude: vec![],
277276
replace: vec![]
278277
},
279278
only(&select.projection)
@@ -285,7 +284,6 @@ fn parse_select_wildcard() {
285284
&SelectItem::Wildcard {
286285
prefix: Some(ObjectName(vec![Ident::new("foo")])),
287286
except: vec![],
288-
exclude: vec![],
289287
replace: vec![]
290288
},
291289
only(&select.projection)
@@ -300,7 +298,6 @@ fn parse_select_wildcard() {
300298
Ident::new("mytable"),
301299
])),
302300
except: vec![],
303-
exclude: vec![],
304301
replace: vec![]
305302
},
306303
only(&select.projection)

tests/sqlparser_regression.rs

Lines changed: 34 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -15,75 +15,50 @@
1515
use sqlparser::dialect::GenericDialect;
1616
use sqlparser::parser::Parser;
1717

18-
macro_rules! regression_tests {
19-
(
20-
path: $path:literal,
21-
tests: [$(
22-
$(#[$attr:ident])?
23-
$name:ident: $file:expr,
24-
)*] $(,)?
25-
) => {
18+
macro_rules! tpch_tests {
19+
($($name:ident: $value:expr,)*) => {
20+
const QUERIES: &[&str] = &[
21+
$(include_str!(concat!("queries/tpch/", $value, ".sql"))),*
22+
];
2623
$(
2724

2825
#[test]
29-
$(#[$attr])?
3026
fn $name() {
3127
let dialect = GenericDialect {};
3228

33-
let stmts = Parser::parse_sql(&dialect, include_str!(concat!($path, $file, ".sql")))
34-
.unwrap_or_else(|err| panic!("{}", err));
35-
36-
// check that each statement still parses after being rendered
37-
for stmt in stmts {
38-
assert!(Parser::parse_sql(&dialect, &dbg!(stmt.to_string())).is_ok());
29+
let res = Parser::parse_sql(&dialect, QUERIES[$value -1]);
30+
// Ignore 6.sql and 22.sql
31+
if $value != 6 && $value != 22 {
32+
assert!(res.is_ok());
3933
}
4034
}
4135
)*
4236
}
4337
}
4438

45-
regression_tests! {
46-
path: "queries/tpch/",
47-
tests: [
48-
tpch_1: "1",
49-
tpch_2: "2",
50-
tpch_3: "3",
51-
tpch_4: "4",
52-
tpch_5: "5",
53-
tpch_6: "6",
54-
tpch_7: "7",
55-
tpch_8: "8",
56-
tpch_9: "9",
57-
tpch_10: "10",
58-
tpch_11: "11",
59-
tpch_12: "12",
60-
tpch_13: "13",
61-
tpch_14: "14",
62-
tpch_15: "15",
63-
tpch_16: "16",
64-
tpch_17: "17",
65-
tpch_18: "18",
66-
tpch_19: "19",
67-
tpch_20: "20",
68-
tpch_21: "21",
69-
#[ignore]
70-
tpch_22: "22",
71-
tpch_23: "23",
72-
tpch_24: "24",
73-
],
74-
}
75-
76-
regression_tests! {
77-
path: "queries/snowflake/",
78-
tests: [
79-
snowflake_wildcard_modifiers_exclude: "wildcard_modifiers_exclude",
80-
snowflake_wildcard_modifiers_replace: "wildcard_modifiers_replace",
81-
],
82-
}
83-
84-
regression_tests! {
85-
path: "queries/bigquery/",
86-
tests: [
87-
bigquery_wildcard_modifiers_except: "wildcard_modifiers_except",
88-
],
39+
tpch_tests! {
40+
tpch_1: 1,
41+
tpch_2: 2,
42+
tpch_3: 3,
43+
tpch_4: 4,
44+
tpch_5: 5,
45+
tpch_6: 6,
46+
tpch_7: 7,
47+
tpch_8: 8,
48+
tpch_9: 9,
49+
tpch_10: 10,
50+
tpch_11: 11,
51+
tpch_12: 12,
52+
tpch_13: 13,
53+
tpch_14: 14,
54+
tpch_15: 15,
55+
tpch_16: 16,
56+
tpch_17: 17,
57+
tpch_18: 18,
58+
tpch_19: 19,
59+
tpch_20: 20,
60+
tpch_21: 21,
61+
tpch_22: 22,
62+
tpch_23: 23,
63+
tpch_24: 24,
8964
}

tests/sqlparser_sigma.rs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1428,7 +1428,6 @@ fn parse_complicated_sql() {
14281428
quote_style: None,
14291429
}])),
14301430
except: vec![],
1431-
exclude: vec![],
14321431
replace: vec![],
14331432
},
14341433
ExprWithAlias {
@@ -2045,7 +2044,6 @@ fn parse_complicated_sql() {
20452044
SelectItem::Wildcard {
20462045
prefix: None,
20472046
except: vec![],
2048-
exclude: vec![],
20492047
replace: vec![],
20502048
},
20512049
ExprWithAlias {
@@ -2122,7 +2120,6 @@ fn parse_complicated_sql() {
21222120
quote_style: None,
21232121
}])),
21242122
except: vec![],
2125-
exclude: vec![],
21262123
replace: vec![],
21272124
},
21282125
ExprWithAlias {
@@ -2643,7 +2640,6 @@ fn parse_complicated_sql() {
26432640
quote_style: None,
26442641
}])),
26452642
except: vec![],
2646-
exclude: vec![],
26472643
replace: vec![],
26482644
},
26492645
ExprWithAlias {
@@ -2768,7 +2764,6 @@ fn parse_complicated_sql() {
27682764
quote_style: None,
27692765
}])),
27702766
except: vec![],
2771-
exclude: vec![],
27722767
replace: vec![],
27732768
},
27742769
ExprWithAlias {

0 commit comments

Comments
 (0)