From 5f9030786f8489e70aee70acabee440ecf23699c Mon Sep 17 00:00:00 2001 From: Jo <46752250+georgesittas@users.noreply.github.com> Date: Tue, 4 Feb 2025 17:59:40 +0200 Subject: [PATCH] Fix(duckdb): enable support for user-defined types (#4702) --- sqlglot/dialects/duckdb.py | 2 +- tests/dialects/test_duckdb.py | 1 + tests/test_transpile.py | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/sqlglot/dialects/duckdb.py b/sqlglot/dialects/duckdb.py index 31c0903faf..7041bfba28 100644 --- a/sqlglot/dialects/duckdb.py +++ b/sqlglot/dialects/duckdb.py @@ -272,7 +272,7 @@ def _json_extract_value_array_sql( class DuckDB(Dialect): NULL_ORDERING = "nulls_are_last" - SUPPORTS_USER_DEFINED_TYPES = False + SUPPORTS_USER_DEFINED_TYPES = True SAFE_DIVISION = True INDEX_OFFSET = 1 CONCAT_COALESCE = True diff --git a/tests/dialects/test_duckdb.py b/tests/dialects/test_duckdb.py index 959a1b3fef..648504c7a5 100644 --- a/tests/dialects/test_duckdb.py +++ b/tests/dialects/test_duckdb.py @@ -256,6 +256,7 @@ def test_duckdb(self): parse_one("a // b", read="duckdb").assert_is(exp.IntDiv).sql(dialect="duckdb"), "a // b" ) + self.validate_identity("CAST(x AS FOO)") self.validate_identity("SELECT UNNEST([1, 2])").selects[0].assert_is(exp.UDTF) self.validate_identity("'red' IN flags").args["field"].assert_is(exp.Column) self.validate_identity("'red' IN tbl.flags") diff --git a/tests/test_transpile.py b/tests/test_transpile.py index bb8d032f6d..db14cedc4e 100644 --- a/tests/test_transpile.py +++ b/tests/test_transpile.py @@ -610,7 +610,7 @@ def test_types(self): self.validate("CAST(x AS INT)::BOOLEAN", "CAST(CAST(x AS INT) AS BOOLEAN)") with self.assertRaises(ParseError): - transpile("x::z", read="duckdb") + transpile("x::z", read="clickhouse") def test_not_range(self): self.validate("a NOT LIKE b", "NOT a LIKE b")