Skip to content

Commit 761e835

Browse files
authored
fix: qualify using (#4646)
1 parent 94af80b commit 761e835

File tree

3 files changed

+5
-1
lines changed

3 files changed

+5
-1
lines changed

sqlglot/optimizer/qualify_columns.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,9 @@ def _update_source_columns(source_name: str) -> None:
173173
names = {join.alias_or_name for join in joins}
174174
ordered = [key for key in scope.selected_sources if key not in names]
175175

176+
if names and not ordered:
177+
raise OptimizeError(f"Joins {names} missing source table {scope.expression}")
178+
176179
# Mapping of automatically joined column names to an ordered set of source names (dict).
177180
column_tables: t.Dict[str, t.Dict[str, t.Any]] = {}
178181

tests/fixtures/optimizer/qualify_columns.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -831,4 +831,4 @@ SELECT x.a AS a, COALESCE(x.b, y_2.b) AS b, y_2.c AS c FROM x AS x SEMI JOIN y A
831831

832832
# title: ANTI + normal joins reinclude the table on scope
833833
SELECT * FROM x ANTI JOIN y USING (b) JOIN y USING (b);
834-
SELECT x.a AS a, COALESCE(x.b, y_2.b) AS b, y_2.c AS c FROM x AS x ANTI JOIN y AS y ON x.b = y.b JOIN y AS y_2 ON x.b = y_2.b;
834+
SELECT x.a AS a, COALESCE(x.b, y_2.b) AS b, y_2.c AS c FROM x AS x ANTI JOIN y AS y ON x.b = y.b JOIN y AS y_2 ON x.b = y_2.b;

tests/fixtures/optimizer/qualify_columns__invalid.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ SELECT a, SUM(b) FROM x GROUP BY 3;
1212
SELECT p FROM (SELECT x from xx) y CROSS JOIN yy CROSS JOIN zz
1313
SELECT a FROM (SELECT * FROM x CROSS JOIN y);
1414
SELECT x FROM tbl AS tbl(a);
15+
SELECT a JOIN b USING (a);

0 commit comments

Comments
 (0)