Adding upstream version 6.0.4.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
d01130b3f1
commit
527597d2af
122 changed files with 23162 additions and 0 deletions
31
sqlglot/optimizer/isolate_table_selects.py
Normal file
31
sqlglot/optimizer/isolate_table_selects.py
Normal file
|
@ -0,0 +1,31 @@
|
|||
from sqlglot import alias, exp
|
||||
from sqlglot.errors import OptimizeError
|
||||
from sqlglot.optimizer.scope import traverse_scope
|
||||
|
||||
|
||||
def isolate_table_selects(expression):
|
||||
for scope in traverse_scope(expression):
|
||||
if len(scope.selected_sources) == 1:
|
||||
continue
|
||||
|
||||
for (_, source) in scope.selected_sources.values():
|
||||
if not isinstance(source, exp.Table):
|
||||
continue
|
||||
|
||||
if not isinstance(source.parent, exp.Alias):
|
||||
raise OptimizeError(
|
||||
"Tables require an alias. Run qualify_tables optimization."
|
||||
)
|
||||
|
||||
parent = source.parent
|
||||
|
||||
parent.replace(
|
||||
exp.select("*")
|
||||
.from_(
|
||||
alias(source, source.name or parent.alias, table=True),
|
||||
copy=False,
|
||||
)
|
||||
.subquery(parent.alias, copy=False)
|
||||
)
|
||||
|
||||
return expression
|
Loading…
Add table
Add a link
Reference in a new issue