Skip to content

Commit 6b47ca1

Browse files
committed
add more tests
1 parent fc01ddb commit 6b47ca1

File tree

3 files changed

+19
-13
lines changed

3 files changed

+19
-13
lines changed

src/ast/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3331,7 +3331,7 @@ pub enum Statement {
33313331
overwrite: bool,
33323332
table_name: ObjectName,
33333333
partitioned: Option<Vec<Expr>>,
3334-
table_format: Option<HiveLoadDataOption>,
3334+
table_format: Option<HiveLoadDataFormat>,
33353335
},
33363336
}
33373337

@@ -3956,7 +3956,7 @@ impl fmt::Display for Statement {
39563956
write!(f, " PARTITION ({})", display_comma_separated(parts))?;
39573957
}
39583958
}
3959-
if let Some(HiveLoadDataOption {
3959+
if let Some(HiveLoadDataFormat {
39603960
serde,
39613961
input_format,
39623962
}) = &table_format
@@ -5860,7 +5860,7 @@ pub enum HiveRowFormat {
58605860
#[derive(Debug, Clone, PartialEq, PartialOrd, Eq, Ord, Hash)]
58615861
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
58625862
#[cfg_attr(feature = "visitor", derive(Visit, VisitMut))]
5863-
pub struct HiveLoadDataOption {
5863+
pub struct HiveLoadDataFormat {
58645864
pub serde: Expr,
58655865
pub input_format: Expr,
58665866
}

src/parser/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11038,12 +11038,12 @@ impl<'a> Parser<'a> {
1103811038

1103911039
pub fn parse_load_data_table_format(
1104011040
&mut self,
11041-
) -> Result<Option<HiveLoadDataOption>, ParserError> {
11041+
) -> Result<Option<HiveLoadDataFormat>, ParserError> {
1104211042
if self.parse_keyword(Keyword::INPUTFORMAT) {
1104311043
let input_format = self.parse_expr()?;
1104411044
self.expect_keyword(Keyword::SERDE)?;
1104511045
let serde = self.parse_expr()?;
11046-
Ok(Some(HiveLoadDataOption {
11046+
Ok(Some(HiveLoadDataFormat {
1104711047
input_format,
1104811048
serde,
1104911049
}))
@@ -12079,7 +12079,7 @@ impl<'a> Parser<'a> {
1207912079
})
1208012080
} else {
1208112081
self.expected(
12082-
"Expected: dialect supports `LOAD DATA` or `LOAD extension` to parse `LOAD` statements",
12082+
"dialect supports `LOAD DATA` or `LOAD extension` to parse `LOAD` statements",
1208312083
self.peek_token(),
1208412084
)
1208512085
}

tests/sqlparser_common.rs

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11516,10 +11516,6 @@ fn parse_notify_channel() {
1151611516
dialects.parse_sql_statements(sql).unwrap_err(),
1151711517
ParserError::ParserError("Expected: an SQL statement, found: NOTIFY".to_string())
1151811518
);
11519-
assert_eq!(
11520-
dialects.parse_sql_statements(sql).unwrap_err(),
11521-
ParserError::ParserError("Expected: an SQL statement, found: NOTIFY".to_string())
11522-
);
1152311519
}
1152411520
}
1152511521

@@ -11639,11 +11635,21 @@ fn parse_load_data() {
1163911635
op: BinaryOperator::Eq,
1164011636
right: Box::new(Expr::Value(Value::Number("11".parse().unwrap(), false))),
1164111637
}]), partitioned);
11642-
assert_eq!(Some(HiveLoadDataOption {serde: Expr::Value(Value::SingleQuotedString("org.apache.hadoop.hive.serde2.OpenCSVSerde".to_string())), input_format: Expr::Value(Value::SingleQuotedString("org.apache.hadoop.mapred.TextInputFormat".to_string()))}), table_format);
11638+
assert_eq!(Some(HiveLoadDataFormat {serde: Expr::Value(Value::SingleQuotedString("org.apache.hadoop.hive.serde2.OpenCSVSerde".to_string())), input_format: Expr::Value(Value::SingleQuotedString("org.apache.hadoop.mapred.TextInputFormat".to_string()))}), table_format);
1164311639
}
1164411640
_ => unreachable!(),
1164511641
};
1164611642

11643+
// negative test case
11644+
assert_eq!(
11645+
dialects
11646+
.parse_sql_statements(
11647+
"LOAD DATA2 LOCAL INPATH '/local/path/to/data.txt' INTO TABLE test.my_table"
11648+
)
11649+
.unwrap_err(),
11650+
ParserError::ParserError("Expected: dialect supports `LOAD DATA` or `LOAD extension` to parse `LOAD` statements, found: DATA2".to_string())
11651+
);
11652+
1164711653
let dialects = all_dialects_where(|d| !d.supports_load_data() && d.supports_load_extension());
1164811654

1164911655
assert_eq!(
@@ -11668,12 +11674,12 @@ fn parse_load_data() {
1166811674

1166911675
assert_eq!(
1167011676
dialects.parse_sql_statements("LOAD DATA LOCAL INPATH '/local/path/to/data.txt' INTO TABLE test.my_table").unwrap_err(),
11671-
ParserError::ParserError("Expected: Expected: dialect supports `LOAD DATA` or `LOAD extension` to parse `LOAD` statements, found: LOCAL".to_string())
11677+
ParserError::ParserError("Expected: dialect supports `LOAD DATA` or `LOAD extension` to parse `LOAD` statements, found: LOCAL".to_string())
1167211678
);
1167311679

1167411680
assert_eq!(
1167511681
dialects.parse_sql_statements("LOAD DATA INPATH '/local/path/to/data.txt' INTO TABLE test.my_table").unwrap_err(),
11676-
ParserError::ParserError("Expected: Expected: dialect supports `LOAD DATA` or `LOAD extension` to parse `LOAD` statements, found: INPATH".to_string())
11682+
ParserError::ParserError("Expected: dialect supports `LOAD DATA` or `LOAD extension` to parse `LOAD` statements, found: INPATH".to_string())
1167711683
);
1167811684
}
1167911685

0 commit comments

Comments
 (0)