Skip to content

Commit 10d177f

Browse files
yoavcloudLucaCappelletti94
authored andcommitted
Snowflake: Add support for text data type modifiers (apache#2297)
1 parent 8fbbbdc commit 10d177f

2 files changed

Lines changed: 28 additions & 1 deletion

File tree

src/parser/mod.rs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12695,7 +12695,16 @@ impl<'a> Parser<'a> {
1269512695
self.expect_token(&Token::RParen)?;
1269612696
Ok(DataType::FixedString(character_length))
1269712697
}
12698-
Keyword::TEXT => Ok(DataType::Text),
12698+
Keyword::TEXT => {
12699+
if let Some(modifiers) = self.parse_optional_type_modifiers()? {
12700+
Ok(DataType::Custom(
12701+
ObjectName::from(vec![Ident::new("TEXT")]),
12702+
modifiers,
12703+
))
12704+
} else {
12705+
Ok(DataType::Text)
12706+
}
12707+
}
1269912708
Keyword::TINYTEXT => Ok(DataType::TinyText),
1270012709
Keyword::MEDIUMTEXT => Ok(DataType::MediumText),
1270112710
Keyword::LONGTEXT => Ok(DataType::LongText),

tests/sqlparser_common.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6586,6 +6586,24 @@ fn interval_disallow_interval_expr_double_colon() {
65866586
)
65876587
}
65886588

6589+
#[test]
6590+
fn parse_text_type_modifier_double_colon_cast() {
6591+
let expr = verified_expr("ID::TEXT(16777216)");
6592+
assert_eq!(
6593+
expr,
6594+
Expr::Cast {
6595+
kind: CastKind::DoubleColon,
6596+
expr: Box::new(Expr::Identifier(Ident::new("ID"))),
6597+
data_type: DataType::Custom(
6598+
ObjectName::from(vec![Ident::new("TEXT")]),
6599+
vec!["16777216".to_string()]
6600+
),
6601+
array: false,
6602+
format: None,
6603+
}
6604+
);
6605+
}
6606+
65896607
#[test]
65906608
fn parse_interval_and_or_xor() {
65916609
let sql = "SELECT col FROM test \

0 commit comments

Comments
 (0)