diff --git a/sqlglot/transforms.py b/sqlglot/transforms.py index 955224718c..1e6cfc8601 100644 --- a/sqlglot/transforms.py +++ b/sqlglot/transforms.py @@ -124,7 +124,9 @@ def remove_precision_parameterized_types(expression: exp.Expression) -> exp.Expr other expressions. This transforms removes the precision from parameterized types in expressions. """ for node in expression.find_all(exp.DataType): - node.set("expressions", [e for e in node.expressions if isinstance(e, exp.DataType)]) + node.set( + "expressions", [e for e in node.expressions if not isinstance(e, exp.DataTypeSize)] + ) return expression diff --git a/tests/dialects/test_bigquery.py b/tests/dialects/test_bigquery.py index 1bed68246c..b5ab347cde 100644 --- a/tests/dialects/test_bigquery.py +++ b/tests/dialects/test_bigquery.py @@ -36,6 +36,7 @@ def test_bigquery(self): self.validate_identity("SELECT CAST(CURRENT_DATE AS STRING FORMAT 'DAY') AS current_day") self.validate_identity("SAFE_CAST(encrypted_value AS STRING FORMAT 'BASE64')") self.validate_identity("CAST(encrypted_value AS STRING FORMAT 'BASE64')") + self.validate_identity("CAST(STRUCT(1) AS STRUCT)") self.validate_identity("STRING_AGG(a)") self.validate_identity("STRING_AGG(a, ' & ')") self.validate_identity("STRING_AGG(DISTINCT a, ' & ')")