@@ -163,21 +163,25 @@ def check_file(
163163 title = meta .get ("title" ) or f"{ i } , { sql } "
164164 if only and title != only :
165165 continue
166+
166167 dialect = meta .get ("dialect" )
167168 leave_tables_isolated = meta .get ("leave_tables_isolated" )
168169 validate_qualify_columns = meta .get ("validate_qualify_columns" )
170+ canonicalize_table_aliases = meta .get ("canonicalize_table_aliases" )
171+
172+ func_kwargs = kwargs .copy ()
169173
170- func_kwargs = {** kwargs }
171174 if leave_tables_isolated is not None :
172175 func_kwargs ["leave_tables_isolated" ] = string_to_bool (leave_tables_isolated )
173176
174177 if validate_qualify_columns is not None :
175178 func_kwargs ["validate_qualify_columns" ] = string_to_bool (
176179 validate_qualify_columns
177180 )
178-
179181 if dialect :
180182 func_kwargs ["dialect" ] = dialect
183+ if canonicalize_table_aliases :
184+ func_kwargs ["canonicalize_table_aliases" ] = canonicalize_table_aliases
181185
182186 future = pool .submit (parse_and_optimize , func , sql , dialect , ** func_kwargs )
183187 results [future ] = (
@@ -240,77 +244,6 @@ def test_isolate_table_selects(self):
240244 )
241245
242246 def test_qualify_tables (self ):
243- self .assertEqual (
244- optimizer .qualify_tables .qualify_tables (
245- parse_one ("SELECT * FROM t" ),
246- db = "db" ,
247- catalog = "c" ,
248- canonicalize_table_aliases = True ,
249- ).sql (),
250- 'SELECT * FROM c.db.t AS "_0"' ,
251- )
252-
253- self .assertEqual (
254- optimizer .qualify_tables .qualify_tables (
255- parse_one ("SELECT * FROM t1 JOIN t2 ON t1.id = t2.id" ),
256- db = "db" ,
257- catalog = "c" ,
258- canonicalize_table_aliases = True ,
259- ).sql (),
260- 'SELECT * FROM c.db.t1 AS "_0" JOIN c.db.t2 AS "_1" ON _0.id = _1.id' ,
261- )
262-
263- self .assertEqual (
264- optimizer .qualify_tables .qualify_tables (
265- parse_one ("SELECT * FROM db1.users JOIN db2.users ON db1.users.id = db2.users.id" ),
266- catalog = "c" ,
267- canonicalize_table_aliases = True ,
268- ).sql (),
269- 'SELECT * FROM c.db1.users AS "_0" JOIN c.db2.users AS "_1" ON _0.id = _1.id' ,
270- )
271-
272- self .assertEqual (
273- optimizer .qualify_tables .qualify_tables (
274- parse_one ("WITH cte AS (SELECT * FROM t) SELECT * FROM cte" ),
275- db = "db" ,
276- catalog = "c" ,
277- canonicalize_table_aliases = True ,
278- ).sql (),
279- 'WITH cte AS (SELECT * FROM c.db.t AS "_0") SELECT * FROM cte AS "_1"' ,
280- )
281-
282- self .assertEqual (
283- optimizer .qualify_tables .qualify_tables (
284- parse_one ("SELECT * FROM (SELECT * FROM t)" ),
285- db = "db" ,
286- catalog = "c" ,
287- canonicalize_table_aliases = True ,
288- ).sql (),
289- 'SELECT * FROM (SELECT * FROM c.db.t AS "_0") AS "_1"' ,
290- )
291-
292- self .assertEqual (
293- optimizer .qualify_tables .qualify_tables (
294- parse_one ("SELECT * FROM t1, (SELECT * FROM t2) AS sub, t3" ),
295- db = "db" ,
296- catalog = "c" ,
297- canonicalize_table_aliases = True ,
298- ).sql (),
299- 'SELECT * FROM c.db.t1 AS "_2", (SELECT * FROM c.db.t2 AS "_0") AS "_1", c.db.t3 AS "_3"' ,
300- )
301-
302- self .assertEqual (
303- optimizer .qualify_tables .qualify_tables (
304- parse_one (
305- "WITH cte AS (SELECT * FROM t) SELECT * FROM cte PIVOT(SUM(c) FOR v IN ('x', 'y'))"
306- ),
307- db = "db" ,
308- catalog = "c" ,
309- canonicalize_table_aliases = True ,
310- ).sql (),
311- 'WITH cte AS (SELECT * FROM c.db.t AS "_0") SELECT * FROM cte AS "_1" PIVOT(SUM(c) FOR v IN (\' x\' , \' y\' )) AS "_2"' ,
312- )
313-
314247 self .assertEqual (
315248 optimizer .qualify .qualify (
316249 parse_one ("WITH tesT AS (SELECT * FROM t1) SELECT * FROM test" , "bigquery" ),
0 commit comments