Skip to content

Commit fa1dae1

Browse files
authored
Snowflake: Add support for text data type modifiers (#2297)
1 parent 63e9a33 commit fa1dae1

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
@@ -12555,7 +12555,16 @@ impl<'a> Parser<'a> {
1255512555
self.expect_token(&Token::RParen)?;
1255612556
Ok(DataType::FixedString(character_length))
1255712557
}
12558-
Keyword::TEXT => Ok(DataType::Text),
12558+
Keyword::TEXT => {
12559+
if let Some(modifiers) = self.parse_optional_type_modifiers()? {
12560+
Ok(DataType::Custom(
12561+
ObjectName::from(vec![Ident::new("TEXT")]),
12562+
modifiers,
12563+
))
12564+
} else {
12565+
Ok(DataType::Text)
12566+
}
12567+
}
1255912568
Keyword::TINYTEXT => Ok(DataType::TinyText),
1256012569
Keyword::MEDIUMTEXT => Ok(DataType::MediumText),
1256112570
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)