diff options
Diffstat (limited to 'tests/test_optimizer.py')
-rw-r--r-- | tests/test_optimizer.py | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/tests/test_optimizer.py b/tests/test_optimizer.py index 94bd0ba..b7425af 100644 --- a/tests/test_optimizer.py +++ b/tests/test_optimizer.py @@ -216,6 +216,17 @@ class TestOptimizer(unittest.TestCase): "SELECT y AS y FROM x", ) + self.assertEqual( + optimizer.qualify.qualify( + parse_one( + "WITH X AS (SELECT Y.A FROM DB.Y CROSS JOIN a.b.INFORMATION_SCHEMA.COLUMNS) SELECT `A` FROM X", + read="bigquery", + ), + dialect="bigquery", + ).sql(), + 'WITH "x" AS (SELECT "y"."a" AS "a" FROM "DB"."Y" AS "y" CROSS JOIN "a"."b"."INFORMATION_SCHEMA"."COLUMNS" AS "columns") SELECT "x"."a" AS "a" FROM "x"', + ) + self.check_file("qualify_columns", qualify_columns, execute=True, schema=self.schema) def test_qualify_columns__with_invisible(self): @@ -262,7 +273,7 @@ class TestOptimizer(unittest.TestCase): # check order of lateral expansion with no schema self.assertEqual( optimizer.optimize("SELECT a + 1 AS d, d + 1 AS e FROM x WHERE e > 1 GROUP BY e").sql(), - 'SELECT "x"."a" + 1 AS "d", "x"."a" + 2 AS "e" FROM "x" AS "x" WHERE "x"."a" + 2 > 1 GROUP BY "x"."a" + 2', + 'SELECT "x"."a" + 1 AS "d", "x"."a" + 1 + 1 AS "e" FROM "x" AS "x" WHERE "x"."a" + 2 > 1 GROUP BY "x"."a" + 1 + 1', ) self.assertEqual( @@ -724,6 +735,23 @@ FROM READ_CSV('tests/fixtures/optimizer/tpc-h/nation.csv.gz', 'delimiter', '|') ).sql(pretty=True, dialect="snowflake") for func in (optimizer.qualify.qualify, optimizer.optimize): - source_query = parse_one('SELECT * FROM example."source"', read="snowflake") + source_query = parse_one('SELECT * FROM example."source" AS "source"', read="snowflake") transformed = func(source_query, dialect="snowflake", schema=schema) self.assertEqual(transformed.sql(pretty=True, dialect="snowflake"), expected) + + def test_no_pseudocolumn_expansion(self): + schema = { + "a": { + "a": "text", + "b": "text", + "_PARTITIONDATE": "date", + "_PARTITIONTIME": "timestamp", + } + } + + self.assertEqual( + optimizer.optimize( + parse_one("SELECT * FROM a"), schema=MappingSchema(schema, dialect="bigquery") + ), + parse_one('SELECT "a"."a" AS "a", "a"."b" AS "b" FROM "a" AS "a"'), + ) |