Adding upstream version 25.5.1.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
147b6e06e8
commit
4e506fbac7
136 changed files with 80990 additions and 72541 deletions
|
@ -341,6 +341,25 @@ class TestOptimizer(unittest.TestCase):
|
|||
"WITH tbl1 AS (SELECT STRUCT(1 AS `f0`, 2 AS f1) AS col) SELECT tbl1.col.`f0` AS `f0`, tbl1.col.f1 AS f1 FROM tbl1",
|
||||
)
|
||||
|
||||
# can't coalesce USING columns because they don't exist in every already-joined table
|
||||
self.assertEqual(
|
||||
optimizer.qualify_columns.qualify_columns(
|
||||
parse_one(
|
||||
"SELECT id, dt, v FROM (SELECT t1.id, t1.dt, sum(coalesce(t2.v, 0)) AS v FROM t1 AS t1 LEFT JOIN lkp AS lkp USING (id) LEFT JOIN t2 AS t2 USING (other_id, dt, common) WHERE t1.id > 10 GROUP BY 1, 2) AS _q_0",
|
||||
dialect="bigquery",
|
||||
),
|
||||
schema=MappingSchema(
|
||||
schema={
|
||||
"t1": {"id": "int64", "dt": "date", "common": "int64"},
|
||||
"lkp": {"id": "int64", "other_id": "int64", "common": "int64"},
|
||||
"t2": {"other_id": "int64", "dt": "date", "v": "int64", "common": "int64"},
|
||||
},
|
||||
dialect="bigquery",
|
||||
),
|
||||
).sql(dialect="bigquery"),
|
||||
"SELECT _q_0.id AS id, _q_0.dt AS dt, _q_0.v AS v FROM (SELECT t1.id AS id, t1.dt AS dt, sum(coalesce(t2.v, 0)) AS v FROM t1 AS t1 LEFT JOIN lkp AS lkp ON t1.id = lkp.id LEFT JOIN t2 AS t2 ON lkp.other_id = t2.other_id AND t1.dt = t2.dt AND COALESCE(t1.common, lkp.common) = t2.common WHERE t1.id > 10 GROUP BY t1.id, t1.dt) AS _q_0",
|
||||
)
|
||||
|
||||
self.check_file(
|
||||
"qualify_columns",
|
||||
qualify_columns,
|
||||
|
@ -473,15 +492,35 @@ SELECT :with,WITH :expressions,CTE :this,UNION :this,SELECT :expressions,1,:expr
|
|||
'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',
|
||||
)
|
||||
|
||||
unused_schema = {"l": {"c": "int"}}
|
||||
self.assertEqual(
|
||||
optimizer.qualify_columns.qualify_columns(
|
||||
parse_one("SELECT CAST(x AS INT) AS y FROM z AS z"),
|
||||
schema={"l": {"c": "int"}},
|
||||
schema=unused_schema,
|
||||
infer_schema=False,
|
||||
).sql(),
|
||||
"SELECT CAST(x AS INT) AS y FROM z AS z",
|
||||
)
|
||||
|
||||
# BigQuery expands overlapping alias only for GROUP BY + HAVING
|
||||
sql = "WITH data AS (SELECT 1 AS id, 2 AS my_id, 'a' AS name, 'b' AS full_name) SELECT id AS my_id, CONCAT(id, name) AS full_name FROM data WHERE my_id = 1 GROUP BY my_id, full_name HAVING my_id = 1"
|
||||
self.assertEqual(
|
||||
optimizer.qualify_columns.qualify_columns(
|
||||
parse_one(sql, dialect="bigquery"),
|
||||
schema=MappingSchema(schema=unused_schema, dialect="bigquery"),
|
||||
).sql(),
|
||||
"WITH data AS (SELECT 1 AS id, 2 AS my_id, 'a' AS name, 'b' AS full_name) SELECT data.id AS my_id, CONCAT(data.id, data.name) AS full_name FROM data WHERE data.my_id = 1 GROUP BY data.id, CONCAT(data.id, data.name) HAVING data.id = 1",
|
||||
)
|
||||
|
||||
# Clickhouse expands overlapping alias across the entire query
|
||||
self.assertEqual(
|
||||
optimizer.qualify_columns.qualify_columns(
|
||||
parse_one(sql, dialect="clickhouse"),
|
||||
schema=MappingSchema(schema=unused_schema, dialect="clickhouse"),
|
||||
).sql(),
|
||||
"WITH data AS (SELECT 1 AS id, 2 AS my_id, 'a' AS name, 'b' AS full_name) SELECT data.id AS my_id, CONCAT(data.id, data.name) AS full_name FROM data WHERE data.id = 1 GROUP BY data.id, CONCAT(data.id, data.name) HAVING data.id = 1",
|
||||
)
|
||||
|
||||
def test_optimize_joins(self):
|
||||
self.check_file(
|
||||
"optimize_joins",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue