summaryrefslogtreecommitdiffstats
path: root/docs/sqlglot/planner.html
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2023-12-19 11:01:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2023-12-19 11:01:55 +0000
commitf1c2dbe3b17a0d5edffbb65b85b642d0bb2756c5 (patch)
tree5dce0fe2a11381761496eb973c20750f44db56d5 /docs/sqlglot/planner.html
parentReleasing debian version 20.1.0-1. (diff)
downloadsqlglot-f1c2dbe3b17a0d5edffbb65b85b642d0bb2756c5.tar.xz
sqlglot-f1c2dbe3b17a0d5edffbb65b85b642d0bb2756c5.zip
Merging upstream version 20.3.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'docs/sqlglot/planner.html')
-rw-r--r--docs/sqlglot/planner.html137
1 files changed, 85 insertions, 52 deletions
diff --git a/docs/sqlglot/planner.html b/docs/sqlglot/planner.html
index f1b0b83..c68cd9a 100644
--- a/docs/sqlglot/planner.html
+++ b/docs/sqlglot/planner.html
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
- <meta name="generator" content="pdoc 14.1.0"/>
+ <meta name="generator" content="pdoc 14.2.0"/>
<title>sqlglot.planner API documentation</title>
<style>/*! * Bootstrap Reboot v5.0.0 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors * Copyright 2011-2021 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) */*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}</style>
@@ -618,27 +618,38 @@
</span><span id="L-425"><a href="#L-425"><span class="linenos">425</span></a> <span class="bp">cls</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">ctes</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Step</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="L-426"><a href="#L-426"><span class="linenos">426</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Step</span><span class="p">:</span>
</span><span id="L-427"><a href="#L-427"><span class="linenos">427</span></a> <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">)</span>
-</span><span id="L-428"><a href="#L-428"><span class="linenos">428</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">Step</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
-</span><span id="L-429"><a href="#L-429"><span class="linenos">429</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">Step</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
-</span><span id="L-430"><a href="#L-430"><span class="linenos">430</span></a> <span class="n">step</span> <span class="o">=</span> <span class="bp">cls</span><span class="p">(</span>
-</span><span id="L-431"><a href="#L-431"><span class="linenos">431</span></a> <span class="n">op</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span>
-</span><span id="L-432"><a href="#L-432"><span class="linenos">432</span></a> <span class="n">left</span><span class="o">=</span><span class="n">left</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
-</span><span id="L-433"><a href="#L-433"><span class="linenos">433</span></a> <span class="n">right</span><span class="o">=</span><span class="n">right</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
-</span><span id="L-434"><a href="#L-434"><span class="linenos">434</span></a> <span class="n">distinct</span><span class="o">=</span><span class="nb">bool</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;distinct&quot;</span><span class="p">)),</span>
-</span><span id="L-435"><a href="#L-435"><span class="linenos">435</span></a> <span class="p">)</span>
-</span><span id="L-436"><a href="#L-436"><span class="linenos">436</span></a> <span class="n">step</span><span class="o">.</span><span class="n">add_dependency</span><span class="p">(</span><span class="n">left</span><span class="p">)</span>
-</span><span id="L-437"><a href="#L-437"><span class="linenos">437</span></a> <span class="n">step</span><span class="o">.</span><span class="n">add_dependency</span><span class="p">(</span><span class="n">right</span><span class="p">)</span>
-</span><span id="L-438"><a href="#L-438"><span class="linenos">438</span></a> <span class="k">return</span> <span class="n">step</span>
-</span><span id="L-439"><a href="#L-439"><span class="linenos">439</span></a>
-</span><span id="L-440"><a href="#L-440"><span class="linenos">440</span></a> <span class="k">def</span> <span class="nf">_to_s</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">indent</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
-</span><span id="L-441"><a href="#L-441"><span class="linenos">441</span></a> <span class="n">lines</span> <span class="o">=</span> <span class="p">[]</span>
-</span><span id="L-442"><a href="#L-442"><span class="linenos">442</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">distinct</span><span class="p">:</span>
-</span><span id="L-443"><a href="#L-443"><span class="linenos">443</span></a> <span class="n">lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">indent</span><span class="si">}</span><span class="s2">Distinct: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">distinct</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="L-444"><a href="#L-444"><span class="linenos">444</span></a> <span class="k">return</span> <span class="n">lines</span>
+</span><span id="L-428"><a href="#L-428"><span class="linenos">428</span></a>
+</span><span id="L-429"><a href="#L-429"><span class="linenos">429</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">Step</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
+</span><span id="L-430"><a href="#L-430"><span class="linenos">430</span></a> <span class="c1"># SELECT 1 UNION SELECT 2 &lt;-- these subqueries don&#39;t have names</span>
+</span><span id="L-431"><a href="#L-431"><span class="linenos">431</span></a> <span class="n">left</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">left</span><span class="o">.</span><span class="n">name</span> <span class="ow">or</span> <span class="s2">&quot;left&quot;</span>
+</span><span id="L-432"><a href="#L-432"><span class="linenos">432</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">Step</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
+</span><span id="L-433"><a href="#L-433"><span class="linenos">433</span></a> <span class="n">right</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">right</span><span class="o">.</span><span class="n">name</span> <span class="ow">or</span> <span class="s2">&quot;right&quot;</span>
+</span><span id="L-434"><a href="#L-434"><span class="linenos">434</span></a> <span class="n">step</span> <span class="o">=</span> <span class="bp">cls</span><span class="p">(</span>
+</span><span id="L-435"><a href="#L-435"><span class="linenos">435</span></a> <span class="n">op</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span>
+</span><span id="L-436"><a href="#L-436"><span class="linenos">436</span></a> <span class="n">left</span><span class="o">=</span><span class="n">left</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
+</span><span id="L-437"><a href="#L-437"><span class="linenos">437</span></a> <span class="n">right</span><span class="o">=</span><span class="n">right</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
+</span><span id="L-438"><a href="#L-438"><span class="linenos">438</span></a> <span class="n">distinct</span><span class="o">=</span><span class="nb">bool</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;distinct&quot;</span><span class="p">)),</span>
+</span><span id="L-439"><a href="#L-439"><span class="linenos">439</span></a> <span class="p">)</span>
+</span><span id="L-440"><a href="#L-440"><span class="linenos">440</span></a>
+</span><span id="L-441"><a href="#L-441"><span class="linenos">441</span></a> <span class="n">step</span><span class="o">.</span><span class="n">add_dependency</span><span class="p">(</span><span class="n">left</span><span class="p">)</span>
+</span><span id="L-442"><a href="#L-442"><span class="linenos">442</span></a> <span class="n">step</span><span class="o">.</span><span class="n">add_dependency</span><span class="p">(</span><span class="n">right</span><span class="p">)</span>
+</span><span id="L-443"><a href="#L-443"><span class="linenos">443</span></a>
+</span><span id="L-444"><a href="#L-444"><span class="linenos">444</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;limit&quot;</span><span class="p">)</span>
</span><span id="L-445"><a href="#L-445"><span class="linenos">445</span></a>
-</span><span id="L-446"><a href="#L-446"><span class="linenos">446</span></a> <span class="nd">@property</span>
-</span><span id="L-447"><a href="#L-447"><span class="linenos">447</span></a> <span class="k">def</span> <span class="nf">type_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="L-448"><a href="#L-448"><span class="linenos">448</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op</span><span class="o">.</span><span class="vm">__name__</span>
+</span><span id="L-446"><a href="#L-446"><span class="linenos">446</span></a> <span class="k">if</span> <span class="n">limit</span><span class="p">:</span>
+</span><span id="L-447"><a href="#L-447"><span class="linenos">447</span></a> <span class="n">step</span><span class="o">.</span><span class="n">limit</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">limit</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">&quot;expression&quot;</span><span class="p">))</span>
+</span><span id="L-448"><a href="#L-448"><span class="linenos">448</span></a>
+</span><span id="L-449"><a href="#L-449"><span class="linenos">449</span></a> <span class="k">return</span> <span class="n">step</span>
+</span><span id="L-450"><a href="#L-450"><span class="linenos">450</span></a>
+</span><span id="L-451"><a href="#L-451"><span class="linenos">451</span></a> <span class="k">def</span> <span class="nf">_to_s</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">indent</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
+</span><span id="L-452"><a href="#L-452"><span class="linenos">452</span></a> <span class="n">lines</span> <span class="o">=</span> <span class="p">[]</span>
+</span><span id="L-453"><a href="#L-453"><span class="linenos">453</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">distinct</span><span class="p">:</span>
+</span><span id="L-454"><a href="#L-454"><span class="linenos">454</span></a> <span class="n">lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">indent</span><span class="si">}</span><span class="s2">Distinct: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">distinct</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="L-455"><a href="#L-455"><span class="linenos">455</span></a> <span class="k">return</span> <span class="n">lines</span>
+</span><span id="L-456"><a href="#L-456"><span class="linenos">456</span></a>
+</span><span id="L-457"><a href="#L-457"><span class="linenos">457</span></a> <span class="nd">@property</span>
+</span><span id="L-458"><a href="#L-458"><span class="linenos">458</span></a> <span class="k">def</span> <span class="nf">type_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="L-459"><a href="#L-459"><span class="linenos">459</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op</span><span class="o">.</span><span class="vm">__name__</span>
</span></pre></div>
@@ -1935,27 +1946,38 @@ Projections:</li>
</span><span id="SetOperation-426"><a href="#SetOperation-426"><span class="linenos">426</span></a> <span class="bp">cls</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">ctes</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Step</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="SetOperation-427"><a href="#SetOperation-427"><span class="linenos">427</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Step</span><span class="p">:</span>
</span><span id="SetOperation-428"><a href="#SetOperation-428"><span class="linenos">428</span></a> <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">)</span>
-</span><span id="SetOperation-429"><a href="#SetOperation-429"><span class="linenos">429</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">Step</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
-</span><span id="SetOperation-430"><a href="#SetOperation-430"><span class="linenos">430</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">Step</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
-</span><span id="SetOperation-431"><a href="#SetOperation-431"><span class="linenos">431</span></a> <span class="n">step</span> <span class="o">=</span> <span class="bp">cls</span><span class="p">(</span>
-</span><span id="SetOperation-432"><a href="#SetOperation-432"><span class="linenos">432</span></a> <span class="n">op</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span>
-</span><span id="SetOperation-433"><a href="#SetOperation-433"><span class="linenos">433</span></a> <span class="n">left</span><span class="o">=</span><span class="n">left</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
-</span><span id="SetOperation-434"><a href="#SetOperation-434"><span class="linenos">434</span></a> <span class="n">right</span><span class="o">=</span><span class="n">right</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
-</span><span id="SetOperation-435"><a href="#SetOperation-435"><span class="linenos">435</span></a> <span class="n">distinct</span><span class="o">=</span><span class="nb">bool</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;distinct&quot;</span><span class="p">)),</span>
-</span><span id="SetOperation-436"><a href="#SetOperation-436"><span class="linenos">436</span></a> <span class="p">)</span>
-</span><span id="SetOperation-437"><a href="#SetOperation-437"><span class="linenos">437</span></a> <span class="n">step</span><span class="o">.</span><span class="n">add_dependency</span><span class="p">(</span><span class="n">left</span><span class="p">)</span>
-</span><span id="SetOperation-438"><a href="#SetOperation-438"><span class="linenos">438</span></a> <span class="n">step</span><span class="o">.</span><span class="n">add_dependency</span><span class="p">(</span><span class="n">right</span><span class="p">)</span>
-</span><span id="SetOperation-439"><a href="#SetOperation-439"><span class="linenos">439</span></a> <span class="k">return</span> <span class="n">step</span>
-</span><span id="SetOperation-440"><a href="#SetOperation-440"><span class="linenos">440</span></a>
-</span><span id="SetOperation-441"><a href="#SetOperation-441"><span class="linenos">441</span></a> <span class="k">def</span> <span class="nf">_to_s</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">indent</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
-</span><span id="SetOperation-442"><a href="#SetOperation-442"><span class="linenos">442</span></a> <span class="n">lines</span> <span class="o">=</span> <span class="p">[]</span>
-</span><span id="SetOperation-443"><a href="#SetOperation-443"><span class="linenos">443</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">distinct</span><span class="p">:</span>
-</span><span id="SetOperation-444"><a href="#SetOperation-444"><span class="linenos">444</span></a> <span class="n">lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">indent</span><span class="si">}</span><span class="s2">Distinct: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">distinct</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
-</span><span id="SetOperation-445"><a href="#SetOperation-445"><span class="linenos">445</span></a> <span class="k">return</span> <span class="n">lines</span>
+</span><span id="SetOperation-429"><a href="#SetOperation-429"><span class="linenos">429</span></a>
+</span><span id="SetOperation-430"><a href="#SetOperation-430"><span class="linenos">430</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">Step</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
+</span><span id="SetOperation-431"><a href="#SetOperation-431"><span class="linenos">431</span></a> <span class="c1"># SELECT 1 UNION SELECT 2 &lt;-- these subqueries don&#39;t have names</span>
+</span><span id="SetOperation-432"><a href="#SetOperation-432"><span class="linenos">432</span></a> <span class="n">left</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">left</span><span class="o">.</span><span class="n">name</span> <span class="ow">or</span> <span class="s2">&quot;left&quot;</span>
+</span><span id="SetOperation-433"><a href="#SetOperation-433"><span class="linenos">433</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">Step</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
+</span><span id="SetOperation-434"><a href="#SetOperation-434"><span class="linenos">434</span></a> <span class="n">right</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">right</span><span class="o">.</span><span class="n">name</span> <span class="ow">or</span> <span class="s2">&quot;right&quot;</span>
+</span><span id="SetOperation-435"><a href="#SetOperation-435"><span class="linenos">435</span></a> <span class="n">step</span> <span class="o">=</span> <span class="bp">cls</span><span class="p">(</span>
+</span><span id="SetOperation-436"><a href="#SetOperation-436"><span class="linenos">436</span></a> <span class="n">op</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span>
+</span><span id="SetOperation-437"><a href="#SetOperation-437"><span class="linenos">437</span></a> <span class="n">left</span><span class="o">=</span><span class="n">left</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
+</span><span id="SetOperation-438"><a href="#SetOperation-438"><span class="linenos">438</span></a> <span class="n">right</span><span class="o">=</span><span class="n">right</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
+</span><span id="SetOperation-439"><a href="#SetOperation-439"><span class="linenos">439</span></a> <span class="n">distinct</span><span class="o">=</span><span class="nb">bool</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;distinct&quot;</span><span class="p">)),</span>
+</span><span id="SetOperation-440"><a href="#SetOperation-440"><span class="linenos">440</span></a> <span class="p">)</span>
+</span><span id="SetOperation-441"><a href="#SetOperation-441"><span class="linenos">441</span></a>
+</span><span id="SetOperation-442"><a href="#SetOperation-442"><span class="linenos">442</span></a> <span class="n">step</span><span class="o">.</span><span class="n">add_dependency</span><span class="p">(</span><span class="n">left</span><span class="p">)</span>
+</span><span id="SetOperation-443"><a href="#SetOperation-443"><span class="linenos">443</span></a> <span class="n">step</span><span class="o">.</span><span class="n">add_dependency</span><span class="p">(</span><span class="n">right</span><span class="p">)</span>
+</span><span id="SetOperation-444"><a href="#SetOperation-444"><span class="linenos">444</span></a>
+</span><span id="SetOperation-445"><a href="#SetOperation-445"><span class="linenos">445</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;limit&quot;</span><span class="p">)</span>
</span><span id="SetOperation-446"><a href="#SetOperation-446"><span class="linenos">446</span></a>
-</span><span id="SetOperation-447"><a href="#SetOperation-447"><span class="linenos">447</span></a> <span class="nd">@property</span>
-</span><span id="SetOperation-448"><a href="#SetOperation-448"><span class="linenos">448</span></a> <span class="k">def</span> <span class="nf">type_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="SetOperation-449"><a href="#SetOperation-449"><span class="linenos">449</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op</span><span class="o">.</span><span class="vm">__name__</span>
+</span><span id="SetOperation-447"><a href="#SetOperation-447"><span class="linenos">447</span></a> <span class="k">if</span> <span class="n">limit</span><span class="p">:</span>
+</span><span id="SetOperation-448"><a href="#SetOperation-448"><span class="linenos">448</span></a> <span class="n">step</span><span class="o">.</span><span class="n">limit</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">limit</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">&quot;expression&quot;</span><span class="p">))</span>
+</span><span id="SetOperation-449"><a href="#SetOperation-449"><span class="linenos">449</span></a>
+</span><span id="SetOperation-450"><a href="#SetOperation-450"><span class="linenos">450</span></a> <span class="k">return</span> <span class="n">step</span>
+</span><span id="SetOperation-451"><a href="#SetOperation-451"><span class="linenos">451</span></a>
+</span><span id="SetOperation-452"><a href="#SetOperation-452"><span class="linenos">452</span></a> <span class="k">def</span> <span class="nf">_to_s</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">indent</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]:</span>
+</span><span id="SetOperation-453"><a href="#SetOperation-453"><span class="linenos">453</span></a> <span class="n">lines</span> <span class="o">=</span> <span class="p">[]</span>
+</span><span id="SetOperation-454"><a href="#SetOperation-454"><span class="linenos">454</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">distinct</span><span class="p">:</span>
+</span><span id="SetOperation-455"><a href="#SetOperation-455"><span class="linenos">455</span></a> <span class="n">lines</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="n">indent</span><span class="si">}</span><span class="s2">Distinct: </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">distinct</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
+</span><span id="SetOperation-456"><a href="#SetOperation-456"><span class="linenos">456</span></a> <span class="k">return</span> <span class="n">lines</span>
+</span><span id="SetOperation-457"><a href="#SetOperation-457"><span class="linenos">457</span></a>
+</span><span id="SetOperation-458"><a href="#SetOperation-458"><span class="linenos">458</span></a> <span class="nd">@property</span>
+</span><span id="SetOperation-459"><a href="#SetOperation-459"><span class="linenos">459</span></a> <span class="k">def</span> <span class="nf">type_name</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="SetOperation-460"><a href="#SetOperation-460"><span class="linenos">460</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">op</span><span class="o">.</span><span class="vm">__name__</span>
</span></pre></div>
@@ -2050,17 +2072,28 @@ Projections:</li>
</span><span id="SetOperation.from_expression-426"><a href="#SetOperation.from_expression-426"><span class="linenos">426</span></a> <span class="bp">cls</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">ctes</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Step</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="SetOperation.from_expression-427"><a href="#SetOperation.from_expression-427"><span class="linenos">427</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Step</span><span class="p">:</span>
</span><span id="SetOperation.from_expression-428"><a href="#SetOperation.from_expression-428"><span class="linenos">428</span></a> <span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Union</span><span class="p">)</span>
-</span><span id="SetOperation.from_expression-429"><a href="#SetOperation.from_expression-429"><span class="linenos">429</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">Step</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
-</span><span id="SetOperation.from_expression-430"><a href="#SetOperation.from_expression-430"><span class="linenos">430</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">Step</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
-</span><span id="SetOperation.from_expression-431"><a href="#SetOperation.from_expression-431"><span class="linenos">431</span></a> <span class="n">step</span> <span class="o">=</span> <span class="bp">cls</span><span class="p">(</span>
-</span><span id="SetOperation.from_expression-432"><a href="#SetOperation.from_expression-432"><span class="linenos">432</span></a> <span class="n">op</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span>
-</span><span id="SetOperation.from_expression-433"><a href="#SetOperation.from_expression-433"><span class="linenos">433</span></a> <span class="n">left</span><span class="o">=</span><span class="n">left</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
-</span><span id="SetOperation.from_expression-434"><a href="#SetOperation.from_expression-434"><span class="linenos">434</span></a> <span class="n">right</span><span class="o">=</span><span class="n">right</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
-</span><span id="SetOperation.from_expression-435"><a href="#SetOperation.from_expression-435"><span class="linenos">435</span></a> <span class="n">distinct</span><span class="o">=</span><span class="nb">bool</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;distinct&quot;</span><span class="p">)),</span>
-</span><span id="SetOperation.from_expression-436"><a href="#SetOperation.from_expression-436"><span class="linenos">436</span></a> <span class="p">)</span>
-</span><span id="SetOperation.from_expression-437"><a href="#SetOperation.from_expression-437"><span class="linenos">437</span></a> <span class="n">step</span><span class="o">.</span><span class="n">add_dependency</span><span class="p">(</span><span class="n">left</span><span class="p">)</span>
-</span><span id="SetOperation.from_expression-438"><a href="#SetOperation.from_expression-438"><span class="linenos">438</span></a> <span class="n">step</span><span class="o">.</span><span class="n">add_dependency</span><span class="p">(</span><span class="n">right</span><span class="p">)</span>
-</span><span id="SetOperation.from_expression-439"><a href="#SetOperation.from_expression-439"><span class="linenos">439</span></a> <span class="k">return</span> <span class="n">step</span>
+</span><span id="SetOperation.from_expression-429"><a href="#SetOperation.from_expression-429"><span class="linenos">429</span></a>
+</span><span id="SetOperation.from_expression-430"><a href="#SetOperation.from_expression-430"><span class="linenos">430</span></a> <span class="n">left</span> <span class="o">=</span> <span class="n">Step</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
+</span><span id="SetOperation.from_expression-431"><a href="#SetOperation.from_expression-431"><span class="linenos">431</span></a> <span class="c1"># SELECT 1 UNION SELECT 2 &lt;-- these subqueries don&#39;t have names</span>
+</span><span id="SetOperation.from_expression-432"><a href="#SetOperation.from_expression-432"><span class="linenos">432</span></a> <span class="n">left</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">left</span><span class="o">.</span><span class="n">name</span> <span class="ow">or</span> <span class="s2">&quot;left&quot;</span>
+</span><span id="SetOperation.from_expression-433"><a href="#SetOperation.from_expression-433"><span class="linenos">433</span></a> <span class="n">right</span> <span class="o">=</span> <span class="n">Step</span><span class="o">.</span><span class="n">from_expression</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">,</span> <span class="n">ctes</span><span class="p">)</span>
+</span><span id="SetOperation.from_expression-434"><a href="#SetOperation.from_expression-434"><span class="linenos">434</span></a> <span class="n">right</span><span class="o">.</span><span class="n">name</span> <span class="o">=</span> <span class="n">right</span><span class="o">.</span><span class="n">name</span> <span class="ow">or</span> <span class="s2">&quot;right&quot;</span>
+</span><span id="SetOperation.from_expression-435"><a href="#SetOperation.from_expression-435"><span class="linenos">435</span></a> <span class="n">step</span> <span class="o">=</span> <span class="bp">cls</span><span class="p">(</span>
+</span><span id="SetOperation.from_expression-436"><a href="#SetOperation.from_expression-436"><span class="linenos">436</span></a> <span class="n">op</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="p">,</span>
+</span><span id="SetOperation.from_expression-437"><a href="#SetOperation.from_expression-437"><span class="linenos">437</span></a> <span class="n">left</span><span class="o">=</span><span class="n">left</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
+</span><span id="SetOperation.from_expression-438"><a href="#SetOperation.from_expression-438"><span class="linenos">438</span></a> <span class="n">right</span><span class="o">=</span><span class="n">right</span><span class="o">.</span><span class="n">name</span><span class="p">,</span>
+</span><span id="SetOperation.from_expression-439"><a href="#SetOperation.from_expression-439"><span class="linenos">439</span></a> <span class="n">distinct</span><span class="o">=</span><span class="nb">bool</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;distinct&quot;</span><span class="p">)),</span>
+</span><span id="SetOperation.from_expression-440"><a href="#SetOperation.from_expression-440"><span class="linenos">440</span></a> <span class="p">)</span>
+</span><span id="SetOperation.from_expression-441"><a href="#SetOperation.from_expression-441"><span class="linenos">441</span></a>
+</span><span id="SetOperation.from_expression-442"><a href="#SetOperation.from_expression-442"><span class="linenos">442</span></a> <span class="n">step</span><span class="o">.</span><span class="n">add_dependency</span><span class="p">(</span><span class="n">left</span><span class="p">)</span>
+</span><span id="SetOperation.from_expression-443"><a href="#SetOperation.from_expression-443"><span class="linenos">443</span></a> <span class="n">step</span><span class="o">.</span><span class="n">add_dependency</span><span class="p">(</span><span class="n">right</span><span class="p">)</span>
+</span><span id="SetOperation.from_expression-444"><a href="#SetOperation.from_expression-444"><span class="linenos">444</span></a>
+</span><span id="SetOperation.from_expression-445"><a href="#SetOperation.from_expression-445"><span class="linenos">445</span></a> <span class="n">limit</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;limit&quot;</span><span class="p">)</span>
+</span><span id="SetOperation.from_expression-446"><a href="#SetOperation.from_expression-446"><span class="linenos">446</span></a>
+</span><span id="SetOperation.from_expression-447"><a href="#SetOperation.from_expression-447"><span class="linenos">447</span></a> <span class="k">if</span> <span class="n">limit</span><span class="p">:</span>
+</span><span id="SetOperation.from_expression-448"><a href="#SetOperation.from_expression-448"><span class="linenos">448</span></a> <span class="n">step</span><span class="o">.</span><span class="n">limit</span> <span class="o">=</span> <span class="nb">int</span><span class="p">(</span><span class="n">limit</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">&quot;expression&quot;</span><span class="p">))</span>
+</span><span id="SetOperation.from_expression-449"><a href="#SetOperation.from_expression-449"><span class="linenos">449</span></a>
+</span><span id="SetOperation.from_expression-450"><a href="#SetOperation.from_expression-450"><span class="linenos">450</span></a> <span class="k">return</span> <span class="n">step</span>
</span></pre></div>