summaryrefslogtreecommitdiffstats
path: root/sqlglot/planner.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sqlglot/planner.py11
1 files changed, 11 insertions, 0 deletions
diff --git a/sqlglot/planner.py b/sqlglot/planner.py
index 07ee739..bbc52ab 100644
--- a/sqlglot/planner.py
+++ b/sqlglot/planner.py
@@ -425,16 +425,27 @@ class SetOperation(Step):
cls, expression: exp.Expression, ctes: t.Optional[t.Dict[str, Step]] = None
) -> Step:
assert isinstance(expression, exp.Union)
+
left = Step.from_expression(expression.left, ctes)
+ # SELECT 1 UNION SELECT 2 <-- these subqueries don't have names
+ left.name = left.name or "left"
right = Step.from_expression(expression.right, ctes)
+ right.name = right.name or "right"
step = cls(
op=expression.__class__,
left=left.name,
right=right.name,
distinct=bool(expression.args.get("distinct")),
)
+
step.add_dependency(left)
step.add_dependency(right)
+
+ limit = expression.args.get("limit")
+
+ if limit:
+ step.limit = int(limit.text("expression"))
+
return step
def _to_s(self, indent: str) -> t.List[str]: