mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-09-09 23:46:20 +00:00
Support for ANSI CHARACTER LARGE OBJECT[(p)]
and CHAR LARGE OBJECT[(p)]
. (#671)
Add tests for both and `CLOB[(p)]`.
This commit is contained in:
parent
a59874136d
commit
b42632fa0d
2 changed files with 54 additions and 1 deletions
|
@ -3546,6 +3546,10 @@ impl<'a> Parser<'a> {
|
|||
Ok(DataType::CharacterVarying(
|
||||
self.parse_optional_character_length()?,
|
||||
))
|
||||
} else if self.parse_keywords(&[Keyword::LARGE, Keyword::OBJECT]) {
|
||||
Ok(DataType::CharacterLargeObject(
|
||||
self.parse_optional_precision()?,
|
||||
))
|
||||
} else {
|
||||
Ok(DataType::Character(self.parse_optional_character_length()?))
|
||||
}
|
||||
|
@ -3555,6 +3559,8 @@ impl<'a> Parser<'a> {
|
|||
Ok(DataType::CharVarying(
|
||||
self.parse_optional_character_length()?,
|
||||
))
|
||||
} else if self.parse_keywords(&[Keyword::LARGE, Keyword::OBJECT]) {
|
||||
Ok(DataType::CharLargeObject(self.parse_optional_precision()?))
|
||||
} else {
|
||||
Ok(DataType::Char(self.parse_optional_character_length()?))
|
||||
}
|
||||
|
@ -5624,6 +5630,39 @@ mod tests {
|
|||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_ansii_character_large_object_types() {
|
||||
// Character large object types: <https://jakewheat.github.io/sql-overview/sql-2016-foundation-grammar.html#character-large-object-length>
|
||||
let dialect = TestedDialects {
|
||||
dialects: vec![Box::new(GenericDialect {}), Box::new(AnsiDialect {})],
|
||||
};
|
||||
|
||||
test_parse_data_type!(
|
||||
dialect,
|
||||
"CHARACTER LARGE OBJECT",
|
||||
DataType::CharacterLargeObject(None)
|
||||
);
|
||||
test_parse_data_type!(
|
||||
dialect,
|
||||
"CHARACTER LARGE OBJECT(20)",
|
||||
DataType::CharacterLargeObject(Some(20))
|
||||
);
|
||||
|
||||
test_parse_data_type!(
|
||||
dialect,
|
||||
"CHAR LARGE OBJECT",
|
||||
DataType::CharLargeObject(None)
|
||||
);
|
||||
test_parse_data_type!(
|
||||
dialect,
|
||||
"CHAR LARGE OBJECT(20)",
|
||||
DataType::CharLargeObject(Some(20))
|
||||
);
|
||||
|
||||
test_parse_data_type!(dialect, "CLOB", DataType::Clob(None));
|
||||
test_parse_data_type!(dialect, "CLOB(20)", DataType::Clob(Some(20)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_ansii_exact_numeric_types() {
|
||||
// Exact numeric types: <https://jakewheat.github.io/sql-overview/sql-2016-foundation-grammar.html#exact-numeric-type>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue