summaryrefslogtreecommitdiffstats
path: root/sqlglot/optimizer/qualify.py
diff options
context:
space:
mode:
Diffstat (limited to 'sqlglot/optimizer/qualify.py')
-rw-r--r--sqlglot/optimizer/qualify.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/sqlglot/optimizer/qualify.py b/sqlglot/optimizer/qualify.py
index 5fdbde8..8d83b47 100644
--- a/sqlglot/optimizer/qualify.py
+++ b/sqlglot/optimizer/qualify.py
@@ -3,10 +3,11 @@ from __future__ import annotations
import typing as t
from sqlglot import exp
-from sqlglot.dialects.dialect import DialectType
+from sqlglot.dialects.dialect import Dialect, DialectType
from sqlglot.optimizer.isolate_table_selects import isolate_table_selects
from sqlglot.optimizer.normalize_identifiers import normalize_identifiers
from sqlglot.optimizer.qualify_columns import (
+ pushdown_cte_alias_columns as pushdown_cte_alias_columns_func,
qualify_columns as qualify_columns_func,
quote_identifiers as quote_identifiers_func,
validate_qualify_columns as validate_qualify_columns_func,
@@ -22,6 +23,7 @@ def qualify(
catalog: t.Optional[str] = None,
schema: t.Optional[dict | Schema] = None,
expand_alias_refs: bool = True,
+ expand_stars: bool = True,
infer_schema: t.Optional[bool] = None,
isolate_tables: bool = False,
qualify_columns: bool = True,
@@ -47,6 +49,9 @@ def qualify(
catalog: Default catalog name for tables.
schema: Schema to infer column names and types.
expand_alias_refs: Whether or not to expand references to aliases.
+ expand_stars: Whether or not to expand star queries. This is a necessary step
+ for most of the optimizer's rules to work; do not set to False unless you
+ know what you're doing!
infer_schema: Whether or not to infer the schema if missing.
isolate_tables: Whether or not to isolate table selects.
qualify_columns: Whether or not to qualify columns.
@@ -66,9 +71,16 @@ def qualify(
if isolate_tables:
expression = isolate_table_selects(expression, schema=schema)
+ if Dialect.get_or_raise(dialect).PREFER_CTE_ALIAS_COLUMN:
+ expression = pushdown_cte_alias_columns_func(expression)
+
if qualify_columns:
expression = qualify_columns_func(
- expression, schema, expand_alias_refs=expand_alias_refs, infer_schema=infer_schema
+ expression,
+ schema,
+ expand_alias_refs=expand_alias_refs,
+ expand_stars=expand_stars,
+ infer_schema=infer_schema,
)
if quote_identifiers: