File tree Expand file tree Collapse file tree 2 files changed +60
-1
lines changed
Expand file tree Collapse file tree 2 files changed +60
-1
lines changed Original file line number Diff line number Diff line change @@ -12170,7 +12170,18 @@ impl<'a> Parser<'a> {
1217012170 self.expect_token(&Token::RParen)?;
1217112171 Ok(DataType::FixedString(character_length))
1217212172 }
12173- Keyword::TEXT => Ok(DataType::Text),
12173+ Keyword::TEXT => {
12174+ if dialect_is!(dialect is SnowflakeDialect)
12175+ && self.peek_token_ref().token == Token::LParen
12176+ {
12177+ Ok(DataType::Custom(
12178+ ObjectName::from(vec![Ident::new("TEXT")]),
12179+ self.parse_optional_type_modifiers()?.unwrap_or_default(),
12180+ ))
12181+ } else {
12182+ Ok(DataType::Text)
12183+ }
12184+ }
1217412185 Keyword::TINYTEXT => Ok(DataType::TinyText),
1217512186 Keyword::MEDIUMTEXT => Ok(DataType::MediumText),
1217612187 Keyword::LONGTEXT => Ok(DataType::LongText),
Original file line number Diff line number Diff line change @@ -5010,3 +5010,51 @@ fn test_select_dollar_column_from_stage() {
50105010 // With table function args, without alias
50115011 snowflake ( ) . verified_stmt ( "SELECT $1, $2 FROM @mystage1(file_format => 'myformat')" ) ;
50125012}
5013+
5014+ #[ test]
5015+ fn test_snowflake_text_cast_with_length ( ) {
5016+ let expr = snowflake ( ) . verified_expr ( "_ID::TEXT(16777216)" ) ;
5017+ match expr {
5018+ Expr :: Cast {
5019+ kind : CastKind :: DoubleColon ,
5020+ data_type,
5021+ ..
5022+ } => {
5023+ assert_eq ! (
5024+ data_type,
5025+ DataType :: Custom (
5026+ ObjectName :: from( vec![ Ident :: new( "TEXT" ) ] ) ,
5027+ vec![ "16777216" . to_string( ) ] ,
5028+ )
5029+ ) ;
5030+ }
5031+ _ => unreachable ! ( ) ,
5032+ }
5033+ }
5034+
5035+ #[ test]
5036+ fn test_snowflake_create_table_with_text_length ( ) {
5037+ match snowflake ( ) . verified_stmt ( "CREATE TABLE my_table (a TEXT(16777216), b TEXT)" ) {
5038+ Statement :: CreateTable ( CreateTable { columns, .. } ) => {
5039+ assert_eq ! (
5040+ columns,
5041+ vec![
5042+ ColumnDef {
5043+ name: "a" . into( ) ,
5044+ data_type: DataType :: Custom (
5045+ ObjectName :: from( vec![ Ident :: new( "TEXT" ) ] ) ,
5046+ vec![ "16777216" . to_string( ) ] ,
5047+ ) ,
5048+ options: vec![ ] ,
5049+ } ,
5050+ ColumnDef {
5051+ name: "b" . into( ) ,
5052+ data_type: DataType :: Text ,
5053+ options: vec![ ] ,
5054+ } ,
5055+ ]
5056+ ) ;
5057+ }
5058+ _ => unreachable ! ( ) ,
5059+ }
5060+ }
You can’t perform that action at this time.
0 commit comments