diff --git a/fakesnow/transforms.py b/fakesnow/transforms.py index e312151..cf3bdfa 100644 --- a/fakesnow/transforms.py +++ b/fakesnow/transforms.py @@ -236,7 +236,7 @@ def object_construct(expression: exp.Expression) -> exp.Expression: Example: >>> import sqlglot >>> sqlglot.parse_one("SELECT OBJECT_CONSTRUCT('a',1,'b','BBBB', 'c',null)", read="snowflake").transform(object_construct).sql(dialect="duckdb") - "SELECT TO_JSON(OBJECT_CONSTRUCT('a',1,'b','BBBB', 'c',null))" + "SELECT TO_JSON({'a': 1, 'b': 'BBBB', 'c': NULL})" Args: expression (exp.Expression): the expression that will be transformed. @@ -244,7 +244,7 @@ def object_construct(expression: exp.Expression) -> exp.Expression: exp.Expression: The transformed expression. """ # noqa: E501 - if isinstance(expression, exp.VarMap): + if isinstance(expression, exp.Struct): return exp.Anonymous(this="TO_JSON", expressions=[expression]) return expression diff --git a/pyproject.toml b/pyproject.toml index 5539ab0..87a3cd8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,7 +11,7 @@ dependencies = [ "duckdb~=0.8.0", # include the pandas extra to get compatible version of pyarrow "snowflake-connector-python[pandas]", - "sqlglot~=14.1.1", + "sqlglot~=15.0.0", ] [project.urls] diff --git a/tests/test_transforms.py b/tests/test_transforms.py index 1c5c707..6a99f4a 100644 --- a/tests/test_transforms.py +++ b/tests/test_transforms.py @@ -80,7 +80,7 @@ def test_object_construct() -> None: sqlglot.parse_one("SELECT OBJECT_CONSTRUCT('a',1,'b','BBBB', 'c',null)", read="snowflake") .transform(object_construct) .sql(dialect="duckdb") - == "SELECT TO_JSON(MAP(LIST_VALUE('a', 'b', 'c'), LIST_VALUE(1, 'BBBB', NULL)))" + == "SELECT TO_JSON({'a': 1, 'b': 'BBBB', 'c': NULL})" )