You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@datafusion.apache.org by gi...@apache.org on 2026/04/21 15:58:08 UTC

(datafusion-sqlparser-rs) branch main updated: Snowflake: Add support for text data type modifiers (#2297)

This is an automated email from the ASF dual-hosted git repository.

github-merge-queue[bot] pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion-sqlparser-rs.git


The following commit(s) were added to refs/heads/main by this push:
     new fa1dae1d Snowflake: Add support for text data type modifiers (#2297)
fa1dae1d is described below

commit fa1dae1dc813383d2253bf666fa52fc03e6dffba
Author: Yoav Cohen <59...@users.noreply.github.com>
AuthorDate: Tue Apr 21 17:53:26 2026 +0200

    Snowflake: Add support for text data type modifiers (#2297)
---
 src/parser/mod.rs         | 11 ++++++++++-
 tests/sqlparser_common.rs | 18 ++++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/src/parser/mod.rs b/src/parser/mod.rs
index 7be826b2..3d96a1d7 100644
--- a/src/parser/mod.rs
+++ b/src/parser/mod.rs
@@ -12555,7 +12555,16 @@ impl<'a> Parser<'a> {
                     self.expect_token(&Token::RParen)?;
                     Ok(DataType::FixedString(character_length))
                 }
-                Keyword::TEXT => Ok(DataType::Text),
+                Keyword::TEXT => {
+                    if let Some(modifiers) = self.parse_optional_type_modifiers()? {
+                        Ok(DataType::Custom(
+                            ObjectName::from(vec![Ident::new("TEXT")]),
+                            modifiers,
+                        ))
+                    } else {
+                        Ok(DataType::Text)
+                    }
+                }
                 Keyword::TINYTEXT => Ok(DataType::TinyText),
                 Keyword::MEDIUMTEXT => Ok(DataType::MediumText),
                 Keyword::LONGTEXT => Ok(DataType::LongText),
diff --git a/tests/sqlparser_common.rs b/tests/sqlparser_common.rs
index 5a15285c..00937636 100644
--- a/tests/sqlparser_common.rs
+++ b/tests/sqlparser_common.rs
@@ -6586,6 +6586,24 @@ fn interval_disallow_interval_expr_double_colon() {
     )
 }
 
+#[test]
+fn parse_text_type_modifier_double_colon_cast() {
+    let expr = verified_expr("ID::TEXT(16777216)");
+    assert_eq!(
+        expr,
+        Expr::Cast {
+            kind: CastKind::DoubleColon,
+            expr: Box::new(Expr::Identifier(Ident::new("ID"))),
+            data_type: DataType::Custom(
+                ObjectName::from(vec![Ident::new("TEXT")]),
+                vec!["16777216".to_string()]
+            ),
+            array: false,
+            format: None,
+        }
+    );
+}
+
 #[test]
 fn parse_interval_and_or_xor() {
     let sql = "SELECT col FROM test \


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@datafusion.apache.org
For additional commands, e-mail: commits-help@datafusion.apache.org