Merging upstream version 26.1.3.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
829d661a08
commit
c8d4d2df63
119 changed files with 71635 additions and 68059 deletions
|
@ -3,7 +3,7 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="generator" content="pdoc 15.0.0"/>
|
||||
<meta name="generator" content="pdoc 15.0.1"/>
|
||||
<title>sqlglot.transforms 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>
|
||||
|
@ -131,21 +131,21 @@
|
|||
|
||||
<label class="view-source-button" for="mod-transforms-view-source"><span>View Source</span></label>
|
||||
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos"> 1</span></a><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">annotations</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos"> 1</span></a><span class="kn">from</span><span class="w"> </span><span class="nn">__future__</span><span class="w"> </span><span class="kn">import</span> <span class="n">annotations</span>
|
||||
</span><span id="L-2"><a href="#L-2"><span class="linenos"> 2</span></a>
|
||||
</span><span id="L-3"><a href="#L-3"><span class="linenos"> 3</span></a><span class="kn">import</span> <span class="nn">typing</span> <span class="k">as</span> <span class="nn">t</span>
|
||||
</span><span id="L-3"><a href="#L-3"><span class="linenos"> 3</span></a><span class="kn">import</span><span class="w"> </span><span class="nn">typing</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="nn">t</span>
|
||||
</span><span id="L-4"><a href="#L-4"><span class="linenos"> 4</span></a>
|
||||
</span><span id="L-5"><a href="#L-5"><span class="linenos"> 5</span></a><span class="kn">from</span> <span class="nn">sqlglot</span> <span class="kn">import</span> <span class="n">expressions</span> <span class="k">as</span> <span class="n">exp</span>
|
||||
</span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a><span class="kn">from</span> <span class="nn">sqlglot.errors</span> <span class="kn">import</span> <span class="n">UnsupportedError</span>
|
||||
</span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</span></a><span class="kn">from</span> <span class="nn">sqlglot.helper</span> <span class="kn">import</span> <span class="n">find_new_name</span><span class="p">,</span> <span class="n">name_sequence</span>
|
||||
</span><span id="L-5"><a href="#L-5"><span class="linenos"> 5</span></a><span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot</span><span class="w"> </span><span class="kn">import</span> <span class="n">expressions</span> <span class="k">as</span> <span class="n">exp</span>
|
||||
</span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a><span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.errors</span><span class="w"> </span><span class="kn">import</span> <span class="n">UnsupportedError</span>
|
||||
</span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</span></a><span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.helper</span><span class="w"> </span><span class="kn">import</span> <span class="n">find_new_name</span><span class="p">,</span> <span class="n">name_sequence</span>
|
||||
</span><span id="L-8"><a href="#L-8"><span class="linenos"> 8</span></a>
|
||||
</span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</span></a>
|
||||
</span><span id="L-10"><a href="#L-10"><span class="linenos"> 10</span></a><span class="k">if</span> <span class="n">t</span><span class="o">.</span><span class="n">TYPE_CHECKING</span><span class="p">:</span>
|
||||
</span><span id="L-11"><a href="#L-11"><span class="linenos"> 11</span></a> <span class="kn">from</span> <span class="nn">sqlglot._typing</span> <span class="kn">import</span> <span class="n">E</span>
|
||||
</span><span id="L-12"><a href="#L-12"><span class="linenos"> 12</span></a> <span class="kn">from</span> <span class="nn">sqlglot.generator</span> <span class="kn">import</span> <span class="n">Generator</span>
|
||||
</span><span id="L-11"><a href="#L-11"><span class="linenos"> 11</span></a> <span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot._typing</span><span class="w"> </span><span class="kn">import</span> <span class="n">E</span>
|
||||
</span><span id="L-12"><a href="#L-12"><span class="linenos"> 12</span></a> <span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.generator</span><span class="w"> </span><span class="kn">import</span> <span class="n">Generator</span>
|
||||
</span><span id="L-13"><a href="#L-13"><span class="linenos"> 13</span></a>
|
||||
</span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a>
|
||||
</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a><span class="k">def</span> <span class="nf">preprocess</span><span class="p">(</span>
|
||||
</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a><span class="k">def</span><span class="w"> </span><span class="nf">preprocess</span><span class="p">(</span>
|
||||
</span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a> <span class="n">transforms</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Callable</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]],</span>
|
||||
</span><span id="L-17"><a href="#L-17"><span class="linenos"> 17</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</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="nb">str</span><span class="p">]:</span>
|
||||
</span><span id="L-18"><a href="#L-18"><span class="linenos"> 18</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
|
@ -160,7 +160,7 @@
|
|||
</span><span id="L-27"><a href="#L-27"><span class="linenos"> 27</span></a><span class="sd"> Function that can be used as a generator transform.</span>
|
||||
</span><span id="L-28"><a href="#L-28"><span class="linenos"> 28</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-29"><a href="#L-29"><span class="linenos"> 29</span></a>
|
||||
</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a> <span class="k">def</span> <span class="nf">_to_sql</span><span class="p">(</span><span class="bp">self</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="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_to_sql</span><span class="p">(</span><span class="bp">self</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="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a> <span class="n">expression_type</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a>
|
||||
</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a> <span class="k">try</span><span class="p">:</span>
|
||||
|
@ -194,7 +194,7 @@
|
|||
</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a> <span class="k">return</span> <span class="n">_to_sql</span>
|
||||
</span><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a>
|
||||
</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a>
|
||||
</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a><span class="k">def</span> <span class="nf">unnest_generate_date_array_using_recursive_cte</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a><span class="k">def</span><span class="w"> </span><span class="nf">unnest_generate_date_array_using_recursive_cte</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="k">if</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">Select</span><span class="p">):</span>
|
||||
</span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a> <span class="n">recursive_ctes</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
@ -251,7 +251,7 @@
|
|||
</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a>
|
||||
</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a>
|
||||
</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a><span class="k">def</span> <span class="nf">unnest_generate_series</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a><span class="k">def</span><span class="w"> </span><span class="nf">unnest_generate_series</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a><span class="w"> </span><span class="sd">"""Unnests GENERATE_SERIES or SEQUENCE table references."""</span>
|
||||
</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span>
|
||||
</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="k">if</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">Table</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateSeries</span><span class="p">):</span>
|
||||
|
@ -264,7 +264,7 @@
|
|||
</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a>
|
||||
</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a>
|
||||
</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a><span class="k">def</span> <span class="nf">unalias_group</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a><span class="k">def</span><span class="w"> </span><span class="nf">unalias_group</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a><span class="sd"> Replace references to select aliases in GROUP BY clauses.</span>
|
||||
</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a>
|
||||
|
@ -297,7 +297,7 @@
|
|||
</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a>
|
||||
</span><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a>
|
||||
</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a><span class="k">def</span> <span class="nf">eliminate_distinct_on</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a><span class="k">def</span><span class="w"> </span><span class="nf">eliminate_distinct_on</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a><span class="sd"> Convert SELECT DISTINCT ON statements to a subquery with a window function.</span>
|
||||
</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a>
|
||||
|
@ -353,7 +353,7 @@
|
|||
</span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a>
|
||||
</span><span id="L-222"><a href="#L-222"><span class="linenos">222</span></a>
|
||||
</span><span id="L-223"><a href="#L-223"><span class="linenos">223</span></a><span class="k">def</span> <span class="nf">eliminate_qualify</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-223"><a href="#L-223"><span class="linenos">223</span></a><span class="k">def</span><span class="w"> </span><span class="nf">eliminate_qualify</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-224"><a href="#L-224"><span class="linenos">224</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-225"><a href="#L-225"><span class="linenos">225</span></a><span class="sd"> Convert SELECT statements that contain the QUALIFY clause into subqueries, filtered equivalently.</span>
|
||||
</span><span id="L-226"><a href="#L-226"><span class="linenos">226</span></a>
|
||||
|
@ -375,7 +375,7 @@
|
|||
</span><span id="L-242"><a href="#L-242"><span class="linenos">242</span></a> <span class="n">select</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">alias</span><span class="p">))</span>
|
||||
</span><span id="L-243"><a href="#L-243"><span class="linenos">243</span></a> <span class="n">taken</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">alias</span><span class="p">)</span>
|
||||
</span><span id="L-244"><a href="#L-244"><span class="linenos">244</span></a>
|
||||
</span><span id="L-245"><a href="#L-245"><span class="linenos">245</span></a> <span class="k">def</span> <span class="nf">_select_alias_or_name</span><span class="p">(</span><span class="n">select</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="o">-></span> <span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">:</span>
|
||||
</span><span id="L-245"><a href="#L-245"><span class="linenos">245</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_select_alias_or_name</span><span class="p">(</span><span class="n">select</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="o">-></span> <span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">:</span>
|
||||
</span><span id="L-246"><a href="#L-246"><span class="linenos">246</span></a> <span class="n">alias_or_name</span> <span class="o">=</span> <span class="n">select</span><span class="o">.</span><span class="n">alias_or_name</span>
|
||||
</span><span id="L-247"><a href="#L-247"><span class="linenos">247</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">select</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">"alias"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">select</span><span class="o">.</span><span class="n">this</span>
|
||||
</span><span id="L-248"><a href="#L-248"><span class="linenos">248</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span>
|
||||
|
@ -417,7 +417,7 @@
|
|||
</span><span id="L-284"><a href="#L-284"><span class="linenos">284</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-285"><a href="#L-285"><span class="linenos">285</span></a>
|
||||
</span><span id="L-286"><a href="#L-286"><span class="linenos">286</span></a>
|
||||
</span><span id="L-287"><a href="#L-287"><span class="linenos">287</span></a><span class="k">def</span> <span class="nf">remove_precision_parameterized_types</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-287"><a href="#L-287"><span class="linenos">287</span></a><span class="k">def</span><span class="w"> </span><span class="nf">remove_precision_parameterized_types</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-288"><a href="#L-288"><span class="linenos">288</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-289"><a href="#L-289"><span class="linenos">289</span></a><span class="sd"> Some dialects only allow the precision for parameterized types to be defined in the DDL and not in</span>
|
||||
</span><span id="L-290"><a href="#L-290"><span class="linenos">290</span></a><span class="sd"> other expressions. This transforms removes the precision from parameterized types in expressions.</span>
|
||||
|
@ -430,9 +430,9 @@
|
|||
</span><span id="L-297"><a href="#L-297"><span class="linenos">297</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-298"><a href="#L-298"><span class="linenos">298</span></a>
|
||||
</span><span id="L-299"><a href="#L-299"><span class="linenos">299</span></a>
|
||||
</span><span id="L-300"><a href="#L-300"><span class="linenos">300</span></a><span class="k">def</span> <span class="nf">unqualify_unnest</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-300"><a href="#L-300"><span class="linenos">300</span></a><span class="k">def</span><span class="w"> </span><span class="nf">unqualify_unnest</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-301"><a href="#L-301"><span class="linenos">301</span></a><span class="w"> </span><span class="sd">"""Remove references to unnest table aliases, added by the optimizer's qualify_columns step."""</span>
|
||||
</span><span id="L-302"><a href="#L-302"><span class="linenos">302</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.scope</span> <span class="kn">import</span> <span class="n">find_all_in_scope</span>
|
||||
</span><span id="L-302"><a href="#L-302"><span class="linenos">302</span></a> <span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.optimizer.scope</span><span class="w"> </span><span class="kn">import</span> <span class="n">find_all_in_scope</span>
|
||||
</span><span id="L-303"><a href="#L-303"><span class="linenos">303</span></a>
|
||||
</span><span id="L-304"><a href="#L-304"><span class="linenos">304</span></a> <span class="k">if</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">Select</span><span class="p">):</span>
|
||||
</span><span id="L-305"><a href="#L-305"><span class="linenos">305</span></a> <span class="n">unnest_aliases</span> <span class="o">=</span> <span class="p">{</span>
|
||||
|
@ -450,13 +450,13 @@
|
|||
</span><span id="L-317"><a href="#L-317"><span class="linenos">317</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-318"><a href="#L-318"><span class="linenos">318</span></a>
|
||||
</span><span id="L-319"><a href="#L-319"><span class="linenos">319</span></a>
|
||||
</span><span id="L-320"><a href="#L-320"><span class="linenos">320</span></a><span class="k">def</span> <span class="nf">unnest_to_explode</span><span class="p">(</span>
|
||||
</span><span id="L-320"><a href="#L-320"><span class="linenos">320</span></a><span class="k">def</span><span class="w"> </span><span class="nf">unnest_to_explode</span><span class="p">(</span>
|
||||
</span><span id="L-321"><a href="#L-321"><span class="linenos">321</span></a> <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><span id="L-322"><a href="#L-322"><span class="linenos">322</span></a> <span class="n">unnest_using_arrays_zip</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="L-323"><a href="#L-323"><span class="linenos">323</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-324"><a href="#L-324"><span class="linenos">324</span></a><span class="w"> </span><span class="sd">"""Convert cross join unnest into lateral view explode."""</span>
|
||||
</span><span id="L-325"><a href="#L-325"><span class="linenos">325</span></a>
|
||||
</span><span id="L-326"><a href="#L-326"><span class="linenos">326</span></a> <span class="k">def</span> <span class="nf">_unnest_zip_exprs</span><span class="p">(</span>
|
||||
</span><span id="L-326"><a href="#L-326"><span class="linenos">326</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_unnest_zip_exprs</span><span class="p">(</span>
|
||||
</span><span id="L-327"><a href="#L-327"><span class="linenos">327</span></a> <span class="n">u</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">,</span> <span class="n">unnest_exprs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</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">has_multi_expr</span><span class="p">:</span> <span class="nb">bool</span>
|
||||
</span><span id="L-328"><a href="#L-328"><span class="linenos">328</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
|
||||
</span><span id="L-329"><a href="#L-329"><span class="linenos">329</span></a> <span class="k">if</span> <span class="n">has_multi_expr</span><span class="p">:</span>
|
||||
|
@ -471,7 +471,7 @@
|
|||
</span><span id="L-338"><a href="#L-338"><span class="linenos">338</span></a> <span class="k">return</span> <span class="n">zip_exprs</span>
|
||||
</span><span id="L-339"><a href="#L-339"><span class="linenos">339</span></a> <span class="k">return</span> <span class="n">unnest_exprs</span>
|
||||
</span><span id="L-340"><a href="#L-340"><span class="linenos">340</span></a>
|
||||
</span><span id="L-341"><a href="#L-341"><span class="linenos">341</span></a> <span class="k">def</span> <span class="nf">_udtf_type</span><span class="p">(</span><span class="n">u</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">,</span> <span class="n">has_multi_expr</span><span class="p">:</span> <span class="nb">bool</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">]:</span>
|
||||
</span><span id="L-341"><a href="#L-341"><span class="linenos">341</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_udtf_type</span><span class="p">(</span><span class="n">u</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">,</span> <span class="n">has_multi_expr</span><span class="p">:</span> <span class="nb">bool</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">]:</span>
|
||||
</span><span id="L-342"><a href="#L-342"><span class="linenos">342</span></a> <span class="k">if</span> <span class="n">u</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">"offset"</span><span class="p">):</span>
|
||||
</span><span id="L-343"><a href="#L-343"><span class="linenos">343</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Posexplode</span>
|
||||
</span><span id="L-344"><a href="#L-344"><span class="linenos">344</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Inline</span> <span class="k">if</span> <span class="n">has_multi_expr</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span>
|
||||
|
@ -543,17 +543,17 @@
|
|||
</span><span id="L-410"><a href="#L-410"><span class="linenos">410</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-411"><a href="#L-411"><span class="linenos">411</span></a>
|
||||
</span><span id="L-412"><a href="#L-412"><span class="linenos">412</span></a>
|
||||
</span><span id="L-413"><a href="#L-413"><span class="linenos">413</span></a><span class="k">def</span> <span class="nf">explode_to_unnest</span><span class="p">(</span><span class="n">index_offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
|
||||
</span><span id="L-413"><a href="#L-413"><span class="linenos">413</span></a><span class="k">def</span><span class="w"> </span><span class="nf">explode_to_unnest</span><span class="p">(</span><span class="n">index_offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
|
||||
</span><span id="L-414"><a href="#L-414"><span class="linenos">414</span></a><span class="w"> </span><span class="sd">"""Convert explode/posexplode into unnest."""</span>
|
||||
</span><span id="L-415"><a href="#L-415"><span class="linenos">415</span></a>
|
||||
</span><span id="L-416"><a href="#L-416"><span class="linenos">416</span></a> <span class="k">def</span> <span class="nf">_explode_to_unnest</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-416"><a href="#L-416"><span class="linenos">416</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_explode_to_unnest</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-417"><a href="#L-417"><span class="linenos">417</span></a> <span class="k">if</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">Select</span><span class="p">):</span>
|
||||
</span><span id="L-418"><a href="#L-418"><span class="linenos">418</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.scope</span> <span class="kn">import</span> <span class="n">Scope</span>
|
||||
</span><span id="L-418"><a href="#L-418"><span class="linenos">418</span></a> <span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.optimizer.scope</span><span class="w"> </span><span class="kn">import</span> <span class="n">Scope</span>
|
||||
</span><span id="L-419"><a href="#L-419"><span class="linenos">419</span></a>
|
||||
</span><span id="L-420"><a href="#L-420"><span class="linenos">420</span></a> <span class="n">taken_select_names</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">named_selects</span><span class="p">)</span>
|
||||
</span><span id="L-421"><a href="#L-421"><span class="linenos">421</span></a> <span class="n">taken_source_names</span> <span class="o">=</span> <span class="p">{</span><span class="n">name</span> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">Scope</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="o">.</span><span class="n">references</span><span class="p">}</span>
|
||||
</span><span id="L-422"><a href="#L-422"><span class="linenos">422</span></a>
|
||||
</span><span id="L-423"><a href="#L-423"><span class="linenos">423</span></a> <span class="k">def</span> <span class="nf">new_name</span><span class="p">(</span><span class="n">names</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-423"><a href="#L-423"><span class="linenos">423</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">new_name</span><span class="p">(</span><span class="n">names</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-424"><a href="#L-424"><span class="linenos">424</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">find_new_name</span><span class="p">(</span><span class="n">names</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
|
||||
</span><span id="L-425"><a href="#L-425"><span class="linenos">425</span></a> <span class="n">names</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
</span><span id="L-426"><a href="#L-426"><span class="linenos">426</span></a> <span class="k">return</span> <span class="n">name</span>
|
||||
|
@ -694,7 +694,7 @@
|
|||
</span><span id="L-561"><a href="#L-561"><span class="linenos">561</span></a> <span class="k">return</span> <span class="n">_explode_to_unnest</span>
|
||||
</span><span id="L-562"><a href="#L-562"><span class="linenos">562</span></a>
|
||||
</span><span id="L-563"><a href="#L-563"><span class="linenos">563</span></a>
|
||||
</span><span id="L-564"><a href="#L-564"><span class="linenos">564</span></a><span class="k">def</span> <span class="nf">add_within_group_for_percentiles</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-564"><a href="#L-564"><span class="linenos">564</span></a><span class="k">def</span><span class="w"> </span><span class="nf">add_within_group_for_percentiles</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-565"><a href="#L-565"><span class="linenos">565</span></a><span class="w"> </span><span class="sd">"""Transforms percentiles by adding a WITHIN GROUP clause to them."""</span>
|
||||
</span><span id="L-566"><a href="#L-566"><span class="linenos">566</span></a> <span class="k">if</span> <span class="p">(</span>
|
||||
</span><span id="L-567"><a href="#L-567"><span class="linenos">567</span></a> <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">PERCENTILES</span><span class="p">)</span>
|
||||
|
@ -709,7 +709,7 @@
|
|||
</span><span id="L-576"><a href="#L-576"><span class="linenos">576</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-577"><a href="#L-577"><span class="linenos">577</span></a>
|
||||
</span><span id="L-578"><a href="#L-578"><span class="linenos">578</span></a>
|
||||
</span><span id="L-579"><a href="#L-579"><span class="linenos">579</span></a><span class="k">def</span> <span class="nf">remove_within_group_for_percentiles</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-579"><a href="#L-579"><span class="linenos">579</span></a><span class="k">def</span><span class="w"> </span><span class="nf">remove_within_group_for_percentiles</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-580"><a href="#L-580"><span class="linenos">580</span></a><span class="w"> </span><span class="sd">"""Transforms percentiles by getting rid of their corresponding WITHIN GROUP clause."""</span>
|
||||
</span><span id="L-581"><a href="#L-581"><span class="linenos">581</span></a> <span class="k">if</span> <span class="p">(</span>
|
||||
</span><span id="L-582"><a href="#L-582"><span class="linenos">582</span></a> <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">WithinGroup</span><span class="p">)</span>
|
||||
|
@ -723,7 +723,7 @@
|
|||
</span><span id="L-590"><a href="#L-590"><span class="linenos">590</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-591"><a href="#L-591"><span class="linenos">591</span></a>
|
||||
</span><span id="L-592"><a href="#L-592"><span class="linenos">592</span></a>
|
||||
</span><span id="L-593"><a href="#L-593"><span class="linenos">593</span></a><span class="k">def</span> <span class="nf">add_recursive_cte_column_names</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-593"><a href="#L-593"><span class="linenos">593</span></a><span class="k">def</span><span class="w"> </span><span class="nf">add_recursive_cte_column_names</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-594"><a href="#L-594"><span class="linenos">594</span></a><span class="w"> </span><span class="sd">"""Uses projection output names in recursive CTE definitions to define the CTEs' columns."""</span>
|
||||
</span><span id="L-595"><a href="#L-595"><span class="linenos">595</span></a> <span class="k">if</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">With</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">recursive</span><span class="p">:</span>
|
||||
</span><span id="L-596"><a href="#L-596"><span class="linenos">596</span></a> <span class="n">next_name</span> <span class="o">=</span> <span class="n">name_sequence</span><span class="p">(</span><span class="s2">"_c_"</span><span class="p">)</span>
|
||||
|
@ -742,7 +742,7 @@
|
|||
</span><span id="L-609"><a href="#L-609"><span class="linenos">609</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-610"><a href="#L-610"><span class="linenos">610</span></a>
|
||||
</span><span id="L-611"><a href="#L-611"><span class="linenos">611</span></a>
|
||||
</span><span id="L-612"><a href="#L-612"><span class="linenos">612</span></a><span class="k">def</span> <span class="nf">epoch_cast_to_ts</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-612"><a href="#L-612"><span class="linenos">612</span></a><span class="k">def</span><span class="w"> </span><span class="nf">epoch_cast_to_ts</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-613"><a href="#L-613"><span class="linenos">613</span></a><span class="w"> </span><span class="sd">"""Replace 'epoch' in casts by the equivalent date literal."""</span>
|
||||
</span><span id="L-614"><a href="#L-614"><span class="linenos">614</span></a> <span class="k">if</span> <span class="p">(</span>
|
||||
</span><span id="L-615"><a href="#L-615"><span class="linenos">615</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">))</span>
|
||||
|
@ -754,7 +754,7 @@
|
|||
</span><span id="L-621"><a href="#L-621"><span class="linenos">621</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-622"><a href="#L-622"><span class="linenos">622</span></a>
|
||||
</span><span id="L-623"><a href="#L-623"><span class="linenos">623</span></a>
|
||||
</span><span id="L-624"><a href="#L-624"><span class="linenos">624</span></a><span class="k">def</span> <span class="nf">eliminate_semi_and_anti_joins</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-624"><a href="#L-624"><span class="linenos">624</span></a><span class="k">def</span><span class="w"> </span><span class="nf">eliminate_semi_and_anti_joins</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-625"><a href="#L-625"><span class="linenos">625</span></a><span class="w"> </span><span class="sd">"""Convert SEMI and ANTI joins into equivalent forms that use EXIST instead."""</span>
|
||||
</span><span id="L-626"><a href="#L-626"><span class="linenos">626</span></a> <span class="k">if</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">Select</span><span class="p">):</span>
|
||||
</span><span id="L-627"><a href="#L-627"><span class="linenos">627</span></a> <span class="k">for</span> <span class="n">join</span> <span class="ow">in</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">"joins"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]:</span>
|
||||
|
@ -771,7 +771,7 @@
|
|||
</span><span id="L-638"><a href="#L-638"><span class="linenos">638</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-639"><a href="#L-639"><span class="linenos">639</span></a>
|
||||
</span><span id="L-640"><a href="#L-640"><span class="linenos">640</span></a>
|
||||
</span><span id="L-641"><a href="#L-641"><span class="linenos">641</span></a><span class="k">def</span> <span class="nf">eliminate_full_outer_join</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-641"><a href="#L-641"><span class="linenos">641</span></a><span class="k">def</span><span class="w"> </span><span class="nf">eliminate_full_outer_join</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-642"><a href="#L-642"><span class="linenos">642</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-643"><a href="#L-643"><span class="linenos">643</span></a><span class="sd"> Converts a query with a FULL OUTER join to a union of identical queries that</span>
|
||||
</span><span id="L-644"><a href="#L-644"><span class="linenos">644</span></a><span class="sd"> use LEFT/RIGHT OUTER joins instead. This transformation currently only works</span>
|
||||
|
@ -809,7 +809,7 @@
|
|||
</span><span id="L-676"><a href="#L-676"><span class="linenos">676</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-677"><a href="#L-677"><span class="linenos">677</span></a>
|
||||
</span><span id="L-678"><a href="#L-678"><span class="linenos">678</span></a>
|
||||
</span><span id="L-679"><a href="#L-679"><span class="linenos">679</span></a><span class="k">def</span> <span class="nf">move_ctes_to_top_level</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span>
|
||||
</span><span id="L-679"><a href="#L-679"><span class="linenos">679</span></a><span class="k">def</span><span class="w"> </span><span class="nf">move_ctes_to_top_level</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span>
|
||||
</span><span id="L-680"><a href="#L-680"><span class="linenos">680</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-681"><a href="#L-681"><span class="linenos">681</span></a><span class="sd"> Some dialects (e.g. Hive, T-SQL, Spark prior to version 3) only allow CTEs to be</span>
|
||||
</span><span id="L-682"><a href="#L-682"><span class="linenos">682</span></a><span class="sd"> defined at the top-level, so for example queries like:</span>
|
||||
|
@ -848,11 +848,11 @@
|
|||
</span><span id="L-715"><a href="#L-715"><span class="linenos">715</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-716"><a href="#L-716"><span class="linenos">716</span></a>
|
||||
</span><span id="L-717"><a href="#L-717"><span class="linenos">717</span></a>
|
||||
</span><span id="L-718"><a href="#L-718"><span class="linenos">718</span></a><span class="k">def</span> <span class="nf">ensure_bools</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-718"><a href="#L-718"><span class="linenos">718</span></a><span class="k">def</span><span class="w"> </span><span class="nf">ensure_bools</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-719"><a href="#L-719"><span class="linenos">719</span></a><span class="w"> </span><span class="sd">"""Converts numeric values used in conditions into explicit boolean expressions."""</span>
|
||||
</span><span id="L-720"><a href="#L-720"><span class="linenos">720</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.canonicalize</span> <span class="kn">import</span> <span class="n">ensure_bools</span>
|
||||
</span><span id="L-720"><a href="#L-720"><span class="linenos">720</span></a> <span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.optimizer.canonicalize</span><span class="w"> </span><span class="kn">import</span> <span class="n">ensure_bools</span>
|
||||
</span><span id="L-721"><a href="#L-721"><span class="linenos">721</span></a>
|
||||
</span><span id="L-722"><a href="#L-722"><span class="linenos">722</span></a> <span class="k">def</span> <span class="nf">_ensure_bool</span><span class="p">(</span><span class="n">node</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="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="L-722"><a href="#L-722"><span class="linenos">722</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_ensure_bool</span><span class="p">(</span><span class="n">node</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="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="L-723"><a href="#L-723"><span class="linenos">723</span></a> <span class="k">if</span> <span class="p">(</span>
|
||||
</span><span id="L-724"><a href="#L-724"><span class="linenos">724</span></a> <span class="n">node</span><span class="o">.</span><span class="n">is_number</span>
|
||||
</span><span id="L-725"><a href="#L-725"><span class="linenos">725</span></a> <span class="ow">or</span> <span class="p">(</span>
|
||||
|
@ -869,7 +869,7 @@
|
|||
</span><span id="L-736"><a href="#L-736"><span class="linenos">736</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-737"><a href="#L-737"><span class="linenos">737</span></a>
|
||||
</span><span id="L-738"><a href="#L-738"><span class="linenos">738</span></a>
|
||||
</span><span id="L-739"><a href="#L-739"><span class="linenos">739</span></a><span class="k">def</span> <span class="nf">unqualify_columns</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-739"><a href="#L-739"><span class="linenos">739</span></a><span class="k">def</span><span class="w"> </span><span class="nf">unqualify_columns</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-740"><a href="#L-740"><span class="linenos">740</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span>
|
||||
</span><span id="L-741"><a href="#L-741"><span class="linenos">741</span></a> <span class="c1"># We only wanna pop off the table, db, catalog args</span>
|
||||
</span><span id="L-742"><a href="#L-742"><span class="linenos">742</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">column</span><span class="o">.</span><span class="n">parts</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]:</span>
|
||||
|
@ -878,7 +878,7 @@
|
|||
</span><span id="L-745"><a href="#L-745"><span class="linenos">745</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-746"><a href="#L-746"><span class="linenos">746</span></a>
|
||||
</span><span id="L-747"><a href="#L-747"><span class="linenos">747</span></a>
|
||||
</span><span id="L-748"><a href="#L-748"><span class="linenos">748</span></a><span class="k">def</span> <span class="nf">remove_unique_constraints</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-748"><a href="#L-748"><span class="linenos">748</span></a><span class="k">def</span><span class="w"> </span><span class="nf">remove_unique_constraints</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-749"><a href="#L-749"><span class="linenos">749</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">Create</span><span class="p">)</span>
|
||||
</span><span id="L-750"><a href="#L-750"><span class="linenos">750</span></a> <span class="k">for</span> <span class="n">constraint</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">UniqueColumnConstraint</span><span class="p">):</span>
|
||||
</span><span id="L-751"><a href="#L-751"><span class="linenos">751</span></a> <span class="k">if</span> <span class="n">constraint</span><span class="o">.</span><span class="n">parent</span><span class="p">:</span>
|
||||
|
@ -887,7 +887,7 @@
|
|||
</span><span id="L-754"><a href="#L-754"><span class="linenos">754</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-755"><a href="#L-755"><span class="linenos">755</span></a>
|
||||
</span><span id="L-756"><a href="#L-756"><span class="linenos">756</span></a>
|
||||
</span><span id="L-757"><a href="#L-757"><span class="linenos">757</span></a><span class="k">def</span> <span class="nf">ctas_with_tmp_tables_to_create_tmp_view</span><span class="p">(</span>
|
||||
</span><span id="L-757"><a href="#L-757"><span class="linenos">757</span></a><span class="k">def</span><span class="w"> </span><span class="nf">ctas_with_tmp_tables_to_create_tmp_view</span><span class="p">(</span>
|
||||
</span><span id="L-758"><a href="#L-758"><span class="linenos">758</span></a> <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><span id="L-759"><a href="#L-759"><span class="linenos">759</span></a> <span class="n">tmp_storage_provider</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">e</span><span class="p">:</span> <span class="n">e</span><span class="p">,</span>
|
||||
</span><span id="L-760"><a href="#L-760"><span class="linenos">760</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
|
@ -911,7 +911,7 @@
|
|||
</span><span id="L-778"><a href="#L-778"><span class="linenos">778</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-779"><a href="#L-779"><span class="linenos">779</span></a>
|
||||
</span><span id="L-780"><a href="#L-780"><span class="linenos">780</span></a>
|
||||
</span><span id="L-781"><a href="#L-781"><span class="linenos">781</span></a><span class="k">def</span> <span class="nf">move_schema_columns_to_partitioned_by</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-781"><a href="#L-781"><span class="linenos">781</span></a><span class="k">def</span><span class="w"> </span><span class="nf">move_schema_columns_to_partitioned_by</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-782"><a href="#L-782"><span class="linenos">782</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-783"><a href="#L-783"><span class="linenos">783</span></a><span class="sd"> In Hive, the PARTITIONED BY property acts as an extension of a table's schema. When the</span>
|
||||
</span><span id="L-784"><a href="#L-784"><span class="linenos">784</span></a><span class="sd"> PARTITIONED BY value is an array of column names, they are transformed into a schema.</span>
|
||||
|
@ -934,7 +934,7 @@
|
|||
</span><span id="L-801"><a href="#L-801"><span class="linenos">801</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-802"><a href="#L-802"><span class="linenos">802</span></a>
|
||||
</span><span id="L-803"><a href="#L-803"><span class="linenos">803</span></a>
|
||||
</span><span id="L-804"><a href="#L-804"><span class="linenos">804</span></a><span class="k">def</span> <span class="nf">move_partitioned_by_to_schema_columns</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-804"><a href="#L-804"><span class="linenos">804</span></a><span class="k">def</span><span class="w"> </span><span class="nf">move_partitioned_by_to_schema_columns</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-805"><a href="#L-805"><span class="linenos">805</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-806"><a href="#L-806"><span class="linenos">806</span></a><span class="sd"> Spark 3 supports both "HIVEFORMAT" and "DATASOURCE" formats for CREATE TABLE.</span>
|
||||
</span><span id="L-807"><a href="#L-807"><span class="linenos">807</span></a>
|
||||
|
@ -959,7 +959,7 @@
|
|||
</span><span id="L-826"><a href="#L-826"><span class="linenos">826</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-827"><a href="#L-827"><span class="linenos">827</span></a>
|
||||
</span><span id="L-828"><a href="#L-828"><span class="linenos">828</span></a>
|
||||
</span><span id="L-829"><a href="#L-829"><span class="linenos">829</span></a><span class="k">def</span> <span class="nf">struct_kv_to_alias</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-829"><a href="#L-829"><span class="linenos">829</span></a><span class="k">def</span><span class="w"> </span><span class="nf">struct_kv_to_alias</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-830"><a href="#L-830"><span class="linenos">830</span></a><span class="w"> </span><span class="sd">"""Converts struct arguments to aliases, e.g. STRUCT(1 AS y)."""</span>
|
||||
</span><span id="L-831"><a href="#L-831"><span class="linenos">831</span></a> <span class="k">if</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">Struct</span><span class="p">):</span>
|
||||
</span><span id="L-832"><a href="#L-832"><span class="linenos">832</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span>
|
||||
|
@ -973,7 +973,7 @@
|
|||
</span><span id="L-840"><a href="#L-840"><span class="linenos">840</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-841"><a href="#L-841"><span class="linenos">841</span></a>
|
||||
</span><span id="L-842"><a href="#L-842"><span class="linenos">842</span></a>
|
||||
</span><span id="L-843"><a href="#L-843"><span class="linenos">843</span></a><span class="k">def</span> <span class="nf">eliminate_join_marks</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-843"><a href="#L-843"><span class="linenos">843</span></a><span class="k">def</span><span class="w"> </span><span class="nf">eliminate_join_marks</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-844"><a href="#L-844"><span class="linenos">844</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-845"><a href="#L-845"><span class="linenos">845</span></a><span class="sd"> Remove join marks from an AST. This rule assumes that all marked columns are qualified.</span>
|
||||
</span><span id="L-846"><a href="#L-846"><span class="linenos">846</span></a><span class="sd"> If this does not hold for a query, consider running `sqlglot.optimizer.qualify` first.</span>
|
||||
|
@ -988,7 +988,7 @@
|
|||
</span><span id="L-855"><a href="#L-855"><span class="linenos">855</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="L-856"><a href="#L-856"><span class="linenos">856</span></a><span class="sd"> The AST with join marks removed.</span>
|
||||
</span><span id="L-857"><a href="#L-857"><span class="linenos">857</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-858"><a href="#L-858"><span class="linenos">858</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.scope</span> <span class="kn">import</span> <span class="n">traverse_scope</span>
|
||||
</span><span id="L-858"><a href="#L-858"><span class="linenos">858</span></a> <span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.optimizer.scope</span><span class="w"> </span><span class="kn">import</span> <span class="n">traverse_scope</span>
|
||||
</span><span id="L-859"><a href="#L-859"><span class="linenos">859</span></a>
|
||||
</span><span id="L-860"><a href="#L-860"><span class="linenos">860</span></a> <span class="k">for</span> <span class="n">scope</span> <span class="ow">in</span> <span class="n">traverse_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">):</span>
|
||||
</span><span id="L-861"><a href="#L-861"><span class="linenos">861</span></a> <span class="n">query</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">expression</span>
|
||||
|
@ -1075,7 +1075,7 @@
|
|||
</span><span id="L-942"><a href="#L-942"><span class="linenos">942</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-943"><a href="#L-943"><span class="linenos">943</span></a>
|
||||
</span><span id="L-944"><a href="#L-944"><span class="linenos">944</span></a>
|
||||
</span><span id="L-945"><a href="#L-945"><span class="linenos">945</span></a><span class="k">def</span> <span class="nf">any_to_exists</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-945"><a href="#L-945"><span class="linenos">945</span></a><span class="k">def</span><span class="w"> </span><span class="nf">any_to_exists</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-946"><a href="#L-946"><span class="linenos">946</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-947"><a href="#L-947"><span class="linenos">947</span></a><span class="sd"> Transform ANY operator to Spark's EXISTS</span>
|
||||
</span><span id="L-948"><a href="#L-948"><span class="linenos">948</span></a>
|
||||
|
@ -1115,7 +1115,7 @@
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#preprocess"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="preprocess-16"><a href="#preprocess-16"><span class="linenos">16</span></a><span class="k">def</span> <span class="nf">preprocess</span><span class="p">(</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="preprocess-16"><a href="#preprocess-16"><span class="linenos">16</span></a><span class="k">def</span><span class="w"> </span><span class="nf">preprocess</span><span class="p">(</span>
|
||||
</span><span id="preprocess-17"><a href="#preprocess-17"><span class="linenos">17</span></a> <span class="n">transforms</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Callable</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]],</span>
|
||||
</span><span id="preprocess-18"><a href="#preprocess-18"><span class="linenos">18</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</span><span class="p">[[</span><span class="n">Generator</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="nb">str</span><span class="p">]:</span>
|
||||
</span><span id="preprocess-19"><a href="#preprocess-19"><span class="linenos">19</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
|
@ -1130,7 +1130,7 @@
|
|||
</span><span id="preprocess-28"><a href="#preprocess-28"><span class="linenos">28</span></a><span class="sd"> Function that can be used as a generator transform.</span>
|
||||
</span><span id="preprocess-29"><a href="#preprocess-29"><span class="linenos">29</span></a><span class="sd"> """</span>
|
||||
</span><span id="preprocess-30"><a href="#preprocess-30"><span class="linenos">30</span></a>
|
||||
</span><span id="preprocess-31"><a href="#preprocess-31"><span class="linenos">31</span></a> <span class="k">def</span> <span class="nf">_to_sql</span><span class="p">(</span><span class="bp">self</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="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="preprocess-31"><a href="#preprocess-31"><span class="linenos">31</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_to_sql</span><span class="p">(</span><span class="bp">self</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="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="preprocess-32"><a href="#preprocess-32"><span class="linenos">32</span></a> <span class="n">expression_type</span> <span class="o">=</span> <span class="nb">type</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="preprocess-33"><a href="#preprocess-33"><span class="linenos">33</span></a>
|
||||
</span><span id="preprocess-34"><a href="#preprocess-34"><span class="linenos">34</span></a> <span class="k">try</span><span class="p">:</span>
|
||||
|
@ -1195,7 +1195,7 @@ or the appropriate <code>Generator.TRANSFORMS</code> function (when applicable -
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#unnest_generate_date_array_using_recursive_cte"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="unnest_generate_date_array_using_recursive_cte-65"><a href="#unnest_generate_date_array_using_recursive_cte-65"><span class="linenos"> 65</span></a><span class="k">def</span> <span class="nf">unnest_generate_date_array_using_recursive_cte</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="unnest_generate_date_array_using_recursive_cte-65"><a href="#unnest_generate_date_array_using_recursive_cte-65"><span class="linenos"> 65</span></a><span class="k">def</span><span class="w"> </span><span class="nf">unnest_generate_date_array_using_recursive_cte</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="unnest_generate_date_array_using_recursive_cte-66"><a href="#unnest_generate_date_array_using_recursive_cte-66"><span class="linenos"> 66</span></a> <span class="k">if</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">Select</span><span class="p">):</span>
|
||||
</span><span id="unnest_generate_date_array_using_recursive_cte-67"><a href="#unnest_generate_date_array_using_recursive_cte-67"><span class="linenos"> 67</span></a> <span class="n">count</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
</span><span id="unnest_generate_date_array_using_recursive_cte-68"><a href="#unnest_generate_date_array_using_recursive_cte-68"><span class="linenos"> 68</span></a> <span class="n">recursive_ctes</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
|
@ -1267,7 +1267,7 @@ or the appropriate <code>Generator.TRANSFORMS</code> function (when applicable -
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#unnest_generate_series"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="unnest_generate_series-122"><a href="#unnest_generate_series-122"><span class="linenos">122</span></a><span class="k">def</span> <span class="nf">unnest_generate_series</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="unnest_generate_series-122"><a href="#unnest_generate_series-122"><span class="linenos">122</span></a><span class="k">def</span><span class="w"> </span><span class="nf">unnest_generate_series</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="unnest_generate_series-123"><a href="#unnest_generate_series-123"><span class="linenos">123</span></a><span class="w"> </span><span class="sd">"""Unnests GENERATE_SERIES or SEQUENCE table references."""</span>
|
||||
</span><span id="unnest_generate_series-124"><a href="#unnest_generate_series-124"><span class="linenos">124</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span>
|
||||
</span><span id="unnest_generate_series-125"><a href="#unnest_generate_series-125"><span class="linenos">125</span></a> <span class="k">if</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">Table</span><span class="p">)</span> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">GenerateSeries</span><span class="p">):</span>
|
||||
|
@ -1297,7 +1297,7 @@ or the appropriate <code>Generator.TRANSFORMS</code> function (when applicable -
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#unalias_group"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="unalias_group-135"><a href="#unalias_group-135"><span class="linenos">135</span></a><span class="k">def</span> <span class="nf">unalias_group</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="unalias_group-135"><a href="#unalias_group-135"><span class="linenos">135</span></a><span class="k">def</span><span class="w"> </span><span class="nf">unalias_group</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="unalias_group-136"><a href="#unalias_group-136"><span class="linenos">136</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="unalias_group-137"><a href="#unalias_group-137"><span class="linenos">137</span></a><span class="sd"> Replace references to select aliases in GROUP BY clauses.</span>
|
||||
</span><span id="unalias_group-138"><a href="#unalias_group-138"><span class="linenos">138</span></a>
|
||||
|
@ -1337,7 +1337,7 @@ or the appropriate <code>Generator.TRANSFORMS</code> function (when applicable -
|
|||
|
||||
<blockquote>
|
||||
<div class="pdoc-code codehilite">
|
||||
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">sqlglot</span>
|
||||
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span><span class="w"> </span><span class="nn">sqlglot</span>
|
||||
<span class="gp">>>> </span><span class="n"><a href="../sqlglot.html#parse_one">sqlglot.parse_one</a></span><span class="p">(</span><span class="s2">"SELECT a AS b FROM x GROUP BY b"</span><span class="p">)</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">unalias_group</span><span class="p">)</span><span class="o">.</span><span class="n">sql</span><span class="p">()</span>
|
||||
<span class="go">'SELECT a AS b FROM x GROUP BY 1'</span>
|
||||
</code></pre>
|
||||
|
@ -1370,7 +1370,7 @@ or the appropriate <code>Generator.TRANSFORMS</code> function (when applicable -
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#eliminate_distinct_on"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="eliminate_distinct_on-168"><a href="#eliminate_distinct_on-168"><span class="linenos">168</span></a><span class="k">def</span> <span class="nf">eliminate_distinct_on</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="eliminate_distinct_on-168"><a href="#eliminate_distinct_on-168"><span class="linenos">168</span></a><span class="k">def</span><span class="w"> </span><span class="nf">eliminate_distinct_on</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="eliminate_distinct_on-169"><a href="#eliminate_distinct_on-169"><span class="linenos">169</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="eliminate_distinct_on-170"><a href="#eliminate_distinct_on-170"><span class="linenos">170</span></a><span class="sd"> Convert SELECT DISTINCT ON statements to a subquery with a window function.</span>
|
||||
</span><span id="eliminate_distinct_on-171"><a href="#eliminate_distinct_on-171"><span class="linenos">171</span></a>
|
||||
|
@ -1457,7 +1457,7 @@ or the appropriate <code>Generator.TRANSFORMS</code> function (when applicable -
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#eliminate_qualify"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="eliminate_qualify-224"><a href="#eliminate_qualify-224"><span class="linenos">224</span></a><span class="k">def</span> <span class="nf">eliminate_qualify</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="eliminate_qualify-224"><a href="#eliminate_qualify-224"><span class="linenos">224</span></a><span class="k">def</span><span class="w"> </span><span class="nf">eliminate_qualify</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="eliminate_qualify-225"><a href="#eliminate_qualify-225"><span class="linenos">225</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="eliminate_qualify-226"><a href="#eliminate_qualify-226"><span class="linenos">226</span></a><span class="sd"> Convert SELECT statements that contain the QUALIFY clause into subqueries, filtered equivalently.</span>
|
||||
</span><span id="eliminate_qualify-227"><a href="#eliminate_qualify-227"><span class="linenos">227</span></a>
|
||||
|
@ -1479,7 +1479,7 @@ or the appropriate <code>Generator.TRANSFORMS</code> function (when applicable -
|
|||
</span><span id="eliminate_qualify-243"><a href="#eliminate_qualify-243"><span class="linenos">243</span></a> <span class="n">select</span><span class="o">.</span><span class="n">replace</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">alias</span><span class="p">))</span>
|
||||
</span><span id="eliminate_qualify-244"><a href="#eliminate_qualify-244"><span class="linenos">244</span></a> <span class="n">taken</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">alias</span><span class="p">)</span>
|
||||
</span><span id="eliminate_qualify-245"><a href="#eliminate_qualify-245"><span class="linenos">245</span></a>
|
||||
</span><span id="eliminate_qualify-246"><a href="#eliminate_qualify-246"><span class="linenos">246</span></a> <span class="k">def</span> <span class="nf">_select_alias_or_name</span><span class="p">(</span><span class="n">select</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="o">-></span> <span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">:</span>
|
||||
</span><span id="eliminate_qualify-246"><a href="#eliminate_qualify-246"><span class="linenos">246</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_select_alias_or_name</span><span class="p">(</span><span class="n">select</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="o">-></span> <span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">:</span>
|
||||
</span><span id="eliminate_qualify-247"><a href="#eliminate_qualify-247"><span class="linenos">247</span></a> <span class="n">alias_or_name</span> <span class="o">=</span> <span class="n">select</span><span class="o">.</span><span class="n">alias_or_name</span>
|
||||
</span><span id="eliminate_qualify-248"><a href="#eliminate_qualify-248"><span class="linenos">248</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">select</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">"alias"</span><span class="p">)</span> <span class="ow">or</span> <span class="n">select</span><span class="o">.</span><span class="n">this</span>
|
||||
</span><span id="eliminate_qualify-249"><a href="#eliminate_qualify-249"><span class="linenos">249</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">identifier</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">):</span>
|
||||
|
@ -1548,7 +1548,7 @@ corresponding expression to avoid creating invalid column references.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#remove_precision_parameterized_types"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="remove_precision_parameterized_types-288"><a href="#remove_precision_parameterized_types-288"><span class="linenos">288</span></a><span class="k">def</span> <span class="nf">remove_precision_parameterized_types</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="remove_precision_parameterized_types-288"><a href="#remove_precision_parameterized_types-288"><span class="linenos">288</span></a><span class="k">def</span><span class="w"> </span><span class="nf">remove_precision_parameterized_types</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="remove_precision_parameterized_types-289"><a href="#remove_precision_parameterized_types-289"><span class="linenos">289</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="remove_precision_parameterized_types-290"><a href="#remove_precision_parameterized_types-290"><span class="linenos">290</span></a><span class="sd"> Some dialects only allow the precision for parameterized types to be defined in the DDL and not in</span>
|
||||
</span><span id="remove_precision_parameterized_types-291"><a href="#remove_precision_parameterized_types-291"><span class="linenos">291</span></a><span class="sd"> other expressions. This transforms removes the precision from parameterized types in expressions.</span>
|
||||
|
@ -1579,9 +1579,9 @@ other expressions. This transforms removes the precision from parameterized type
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#unqualify_unnest"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="unqualify_unnest-301"><a href="#unqualify_unnest-301"><span class="linenos">301</span></a><span class="k">def</span> <span class="nf">unqualify_unnest</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="unqualify_unnest-301"><a href="#unqualify_unnest-301"><span class="linenos">301</span></a><span class="k">def</span><span class="w"> </span><span class="nf">unqualify_unnest</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="unqualify_unnest-302"><a href="#unqualify_unnest-302"><span class="linenos">302</span></a><span class="w"> </span><span class="sd">"""Remove references to unnest table aliases, added by the optimizer's qualify_columns step."""</span>
|
||||
</span><span id="unqualify_unnest-303"><a href="#unqualify_unnest-303"><span class="linenos">303</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.scope</span> <span class="kn">import</span> <span class="n">find_all_in_scope</span>
|
||||
</span><span id="unqualify_unnest-303"><a href="#unqualify_unnest-303"><span class="linenos">303</span></a> <span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.optimizer.scope</span><span class="w"> </span><span class="kn">import</span> <span class="n">find_all_in_scope</span>
|
||||
</span><span id="unqualify_unnest-304"><a href="#unqualify_unnest-304"><span class="linenos">304</span></a>
|
||||
</span><span id="unqualify_unnest-305"><a href="#unqualify_unnest-305"><span class="linenos">305</span></a> <span class="k">if</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">Select</span><span class="p">):</span>
|
||||
</span><span id="unqualify_unnest-306"><a href="#unqualify_unnest-306"><span class="linenos">306</span></a> <span class="n">unnest_aliases</span> <span class="o">=</span> <span class="p">{</span>
|
||||
|
@ -1616,13 +1616,13 @@ other expressions. This transforms removes the precision from parameterized type
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#unnest_to_explode"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="unnest_to_explode-321"><a href="#unnest_to_explode-321"><span class="linenos">321</span></a><span class="k">def</span> <span class="nf">unnest_to_explode</span><span class="p">(</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="unnest_to_explode-321"><a href="#unnest_to_explode-321"><span class="linenos">321</span></a><span class="k">def</span><span class="w"> </span><span class="nf">unnest_to_explode</span><span class="p">(</span>
|
||||
</span><span id="unnest_to_explode-322"><a href="#unnest_to_explode-322"><span class="linenos">322</span></a> <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><span id="unnest_to_explode-323"><a href="#unnest_to_explode-323"><span class="linenos">323</span></a> <span class="n">unnest_using_arrays_zip</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="unnest_to_explode-324"><a href="#unnest_to_explode-324"><span class="linenos">324</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="unnest_to_explode-325"><a href="#unnest_to_explode-325"><span class="linenos">325</span></a><span class="w"> </span><span class="sd">"""Convert cross join unnest into lateral view explode."""</span>
|
||||
</span><span id="unnest_to_explode-326"><a href="#unnest_to_explode-326"><span class="linenos">326</span></a>
|
||||
</span><span id="unnest_to_explode-327"><a href="#unnest_to_explode-327"><span class="linenos">327</span></a> <span class="k">def</span> <span class="nf">_unnest_zip_exprs</span><span class="p">(</span>
|
||||
</span><span id="unnest_to_explode-327"><a href="#unnest_to_explode-327"><span class="linenos">327</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_unnest_zip_exprs</span><span class="p">(</span>
|
||||
</span><span id="unnest_to_explode-328"><a href="#unnest_to_explode-328"><span class="linenos">328</span></a> <span class="n">u</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">,</span> <span class="n">unnest_exprs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">List</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">has_multi_expr</span><span class="p">:</span> <span class="nb">bool</span>
|
||||
</span><span id="unnest_to_explode-329"><a href="#unnest_to_explode-329"><span class="linenos">329</span></a> <span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
|
||||
</span><span id="unnest_to_explode-330"><a href="#unnest_to_explode-330"><span class="linenos">330</span></a> <span class="k">if</span> <span class="n">has_multi_expr</span><span class="p">:</span>
|
||||
|
@ -1637,7 +1637,7 @@ other expressions. This transforms removes the precision from parameterized type
|
|||
</span><span id="unnest_to_explode-339"><a href="#unnest_to_explode-339"><span class="linenos">339</span></a> <span class="k">return</span> <span class="n">zip_exprs</span>
|
||||
</span><span id="unnest_to_explode-340"><a href="#unnest_to_explode-340"><span class="linenos">340</span></a> <span class="k">return</span> <span class="n">unnest_exprs</span>
|
||||
</span><span id="unnest_to_explode-341"><a href="#unnest_to_explode-341"><span class="linenos">341</span></a>
|
||||
</span><span id="unnest_to_explode-342"><a href="#unnest_to_explode-342"><span class="linenos">342</span></a> <span class="k">def</span> <span class="nf">_udtf_type</span><span class="p">(</span><span class="n">u</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">,</span> <span class="n">has_multi_expr</span><span class="p">:</span> <span class="nb">bool</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">]:</span>
|
||||
</span><span id="unnest_to_explode-342"><a href="#unnest_to_explode-342"><span class="linenos">342</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_udtf_type</span><span class="p">(</span><span class="n">u</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Unnest</span><span class="p">,</span> <span class="n">has_multi_expr</span><span class="p">:</span> <span class="nb">bool</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Func</span><span class="p">]:</span>
|
||||
</span><span id="unnest_to_explode-343"><a href="#unnest_to_explode-343"><span class="linenos">343</span></a> <span class="k">if</span> <span class="n">u</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">"offset"</span><span class="p">):</span>
|
||||
</span><span id="unnest_to_explode-344"><a href="#unnest_to_explode-344"><span class="linenos">344</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Posexplode</span>
|
||||
</span><span id="unnest_to_explode-345"><a href="#unnest_to_explode-345"><span class="linenos">345</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Inline</span> <span class="k">if</span> <span class="n">has_multi_expr</span> <span class="k">else</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span>
|
||||
|
@ -1726,17 +1726,17 @@ other expressions. This transforms removes the precision from parameterized type
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#explode_to_unnest"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="explode_to_unnest-414"><a href="#explode_to_unnest-414"><span class="linenos">414</span></a><span class="k">def</span> <span class="nf">explode_to_unnest</span><span class="p">(</span><span class="n">index_offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="explode_to_unnest-414"><a href="#explode_to_unnest-414"><span class="linenos">414</span></a><span class="k">def</span><span class="w"> </span><span class="nf">explode_to_unnest</span><span class="p">(</span><span class="n">index_offset</span><span class="p">:</span> <span class="nb">int</span> <span class="o">=</span> <span class="mi">0</span><span class="p">)</span> <span class="o">-></span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
|
||||
</span><span id="explode_to_unnest-415"><a href="#explode_to_unnest-415"><span class="linenos">415</span></a><span class="w"> </span><span class="sd">"""Convert explode/posexplode into unnest."""</span>
|
||||
</span><span id="explode_to_unnest-416"><a href="#explode_to_unnest-416"><span class="linenos">416</span></a>
|
||||
</span><span id="explode_to_unnest-417"><a href="#explode_to_unnest-417"><span class="linenos">417</span></a> <span class="k">def</span> <span class="nf">_explode_to_unnest</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="explode_to_unnest-417"><a href="#explode_to_unnest-417"><span class="linenos">417</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_explode_to_unnest</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="explode_to_unnest-418"><a href="#explode_to_unnest-418"><span class="linenos">418</span></a> <span class="k">if</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">Select</span><span class="p">):</span>
|
||||
</span><span id="explode_to_unnest-419"><a href="#explode_to_unnest-419"><span class="linenos">419</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.scope</span> <span class="kn">import</span> <span class="n">Scope</span>
|
||||
</span><span id="explode_to_unnest-419"><a href="#explode_to_unnest-419"><span class="linenos">419</span></a> <span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.optimizer.scope</span><span class="w"> </span><span class="kn">import</span> <span class="n">Scope</span>
|
||||
</span><span id="explode_to_unnest-420"><a href="#explode_to_unnest-420"><span class="linenos">420</span></a>
|
||||
</span><span id="explode_to_unnest-421"><a href="#explode_to_unnest-421"><span class="linenos">421</span></a> <span class="n">taken_select_names</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">named_selects</span><span class="p">)</span>
|
||||
</span><span id="explode_to_unnest-422"><a href="#explode_to_unnest-422"><span class="linenos">422</span></a> <span class="n">taken_source_names</span> <span class="o">=</span> <span class="p">{</span><span class="n">name</span> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">Scope</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span><span class="o">.</span><span class="n">references</span><span class="p">}</span>
|
||||
</span><span id="explode_to_unnest-423"><a href="#explode_to_unnest-423"><span class="linenos">423</span></a>
|
||||
</span><span id="explode_to_unnest-424"><a href="#explode_to_unnest-424"><span class="linenos">424</span></a> <span class="k">def</span> <span class="nf">new_name</span><span class="p">(</span><span class="n">names</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="explode_to_unnest-424"><a href="#explode_to_unnest-424"><span class="linenos">424</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">new_name</span><span class="p">(</span><span class="n">names</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Set</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="explode_to_unnest-425"><a href="#explode_to_unnest-425"><span class="linenos">425</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">find_new_name</span><span class="p">(</span><span class="n">names</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
|
||||
</span><span id="explode_to_unnest-426"><a href="#explode_to_unnest-426"><span class="linenos">426</span></a> <span class="n">names</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">name</span><span class="p">)</span>
|
||||
</span><span id="explode_to_unnest-427"><a href="#explode_to_unnest-427"><span class="linenos">427</span></a> <span class="k">return</span> <span class="n">name</span>
|
||||
|
@ -1894,7 +1894,7 @@ other expressions. This transforms removes the precision from parameterized type
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#add_within_group_for_percentiles"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="add_within_group_for_percentiles-565"><a href="#add_within_group_for_percentiles-565"><span class="linenos">565</span></a><span class="k">def</span> <span class="nf">add_within_group_for_percentiles</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="add_within_group_for_percentiles-565"><a href="#add_within_group_for_percentiles-565"><span class="linenos">565</span></a><span class="k">def</span><span class="w"> </span><span class="nf">add_within_group_for_percentiles</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="add_within_group_for_percentiles-566"><a href="#add_within_group_for_percentiles-566"><span class="linenos">566</span></a><span class="w"> </span><span class="sd">"""Transforms percentiles by adding a WITHIN GROUP clause to them."""</span>
|
||||
</span><span id="add_within_group_for_percentiles-567"><a href="#add_within_group_for_percentiles-567"><span class="linenos">567</span></a> <span class="k">if</span> <span class="p">(</span>
|
||||
</span><span id="add_within_group_for_percentiles-568"><a href="#add_within_group_for_percentiles-568"><span class="linenos">568</span></a> <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">PERCENTILES</span><span class="p">)</span>
|
||||
|
@ -1926,7 +1926,7 @@ other expressions. This transforms removes the precision from parameterized type
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#remove_within_group_for_percentiles"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="remove_within_group_for_percentiles-580"><a href="#remove_within_group_for_percentiles-580"><span class="linenos">580</span></a><span class="k">def</span> <span class="nf">remove_within_group_for_percentiles</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="remove_within_group_for_percentiles-580"><a href="#remove_within_group_for_percentiles-580"><span class="linenos">580</span></a><span class="k">def</span><span class="w"> </span><span class="nf">remove_within_group_for_percentiles</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="remove_within_group_for_percentiles-581"><a href="#remove_within_group_for_percentiles-581"><span class="linenos">581</span></a><span class="w"> </span><span class="sd">"""Transforms percentiles by getting rid of their corresponding WITHIN GROUP clause."""</span>
|
||||
</span><span id="remove_within_group_for_percentiles-582"><a href="#remove_within_group_for_percentiles-582"><span class="linenos">582</span></a> <span class="k">if</span> <span class="p">(</span>
|
||||
</span><span id="remove_within_group_for_percentiles-583"><a href="#remove_within_group_for_percentiles-583"><span class="linenos">583</span></a> <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">WithinGroup</span><span class="p">)</span>
|
||||
|
@ -1957,7 +1957,7 @@ other expressions. This transforms removes the precision from parameterized type
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#add_recursive_cte_column_names"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="add_recursive_cte_column_names-594"><a href="#add_recursive_cte_column_names-594"><span class="linenos">594</span></a><span class="k">def</span> <span class="nf">add_recursive_cte_column_names</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="add_recursive_cte_column_names-594"><a href="#add_recursive_cte_column_names-594"><span class="linenos">594</span></a><span class="k">def</span><span class="w"> </span><span class="nf">add_recursive_cte_column_names</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="add_recursive_cte_column_names-595"><a href="#add_recursive_cte_column_names-595"><span class="linenos">595</span></a><span class="w"> </span><span class="sd">"""Uses projection output names in recursive CTE definitions to define the CTEs' columns."""</span>
|
||||
</span><span id="add_recursive_cte_column_names-596"><a href="#add_recursive_cte_column_names-596"><span class="linenos">596</span></a> <span class="k">if</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">With</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">recursive</span><span class="p">:</span>
|
||||
</span><span id="add_recursive_cte_column_names-597"><a href="#add_recursive_cte_column_names-597"><span class="linenos">597</span></a> <span class="n">next_name</span> <span class="o">=</span> <span class="n">name_sequence</span><span class="p">(</span><span class="s2">"_c_"</span><span class="p">)</span>
|
||||
|
@ -1993,7 +1993,7 @@ other expressions. This transforms removes the precision from parameterized type
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#epoch_cast_to_ts"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="epoch_cast_to_ts-613"><a href="#epoch_cast_to_ts-613"><span class="linenos">613</span></a><span class="k">def</span> <span class="nf">epoch_cast_to_ts</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="epoch_cast_to_ts-613"><a href="#epoch_cast_to_ts-613"><span class="linenos">613</span></a><span class="k">def</span><span class="w"> </span><span class="nf">epoch_cast_to_ts</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="epoch_cast_to_ts-614"><a href="#epoch_cast_to_ts-614"><span class="linenos">614</span></a><span class="w"> </span><span class="sd">"""Replace 'epoch' in casts by the equivalent date literal."""</span>
|
||||
</span><span id="epoch_cast_to_ts-615"><a href="#epoch_cast_to_ts-615"><span class="linenos">615</span></a> <span class="k">if</span> <span class="p">(</span>
|
||||
</span><span id="epoch_cast_to_ts-616"><a href="#epoch_cast_to_ts-616"><span class="linenos">616</span></a> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Cast</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">))</span>
|
||||
|
@ -2022,7 +2022,7 @@ other expressions. This transforms removes the precision from parameterized type
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#eliminate_semi_and_anti_joins"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="eliminate_semi_and_anti_joins-625"><a href="#eliminate_semi_and_anti_joins-625"><span class="linenos">625</span></a><span class="k">def</span> <span class="nf">eliminate_semi_and_anti_joins</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="eliminate_semi_and_anti_joins-625"><a href="#eliminate_semi_and_anti_joins-625"><span class="linenos">625</span></a><span class="k">def</span><span class="w"> </span><span class="nf">eliminate_semi_and_anti_joins</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="eliminate_semi_and_anti_joins-626"><a href="#eliminate_semi_and_anti_joins-626"><span class="linenos">626</span></a><span class="w"> </span><span class="sd">"""Convert SEMI and ANTI joins into equivalent forms that use EXIST instead."""</span>
|
||||
</span><span id="eliminate_semi_and_anti_joins-627"><a href="#eliminate_semi_and_anti_joins-627"><span class="linenos">627</span></a> <span class="k">if</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">Select</span><span class="p">):</span>
|
||||
</span><span id="eliminate_semi_and_anti_joins-628"><a href="#eliminate_semi_and_anti_joins-628"><span class="linenos">628</span></a> <span class="k">for</span> <span class="n">join</span> <span class="ow">in</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">"joins"</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]:</span>
|
||||
|
@ -2056,7 +2056,7 @@ other expressions. This transforms removes the precision from parameterized type
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#eliminate_full_outer_join"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="eliminate_full_outer_join-642"><a href="#eliminate_full_outer_join-642"><span class="linenos">642</span></a><span class="k">def</span> <span class="nf">eliminate_full_outer_join</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="eliminate_full_outer_join-642"><a href="#eliminate_full_outer_join-642"><span class="linenos">642</span></a><span class="k">def</span><span class="w"> </span><span class="nf">eliminate_full_outer_join</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="eliminate_full_outer_join-643"><a href="#eliminate_full_outer_join-643"><span class="linenos">643</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="eliminate_full_outer_join-644"><a href="#eliminate_full_outer_join-644"><span class="linenos">644</span></a><span class="sd"> Converts a query with a FULL OUTER join to a union of identical queries that</span>
|
||||
</span><span id="eliminate_full_outer_join-645"><a href="#eliminate_full_outer_join-645"><span class="linenos">645</span></a><span class="sd"> use LEFT/RIGHT OUTER joins instead. This transformation currently only works</span>
|
||||
|
@ -2113,7 +2113,7 @@ for queries that have a single FULL OUTER join.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#move_ctes_to_top_level"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="move_ctes_to_top_level-680"><a href="#move_ctes_to_top_level-680"><span class="linenos">680</span></a><span class="k">def</span> <span class="nf">move_ctes_to_top_level</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="move_ctes_to_top_level-680"><a href="#move_ctes_to_top_level-680"><span class="linenos">680</span></a><span class="k">def</span><span class="w"> </span><span class="nf">move_ctes_to_top_level</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">E</span><span class="p">)</span> <span class="o">-></span> <span class="n">E</span><span class="p">:</span>
|
||||
</span><span id="move_ctes_to_top_level-681"><a href="#move_ctes_to_top_level-681"><span class="linenos">681</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="move_ctes_to_top_level-682"><a href="#move_ctes_to_top_level-682"><span class="linenos">682</span></a><span class="sd"> Some dialects (e.g. Hive, T-SQL, Spark prior to version 3) only allow CTEs to be</span>
|
||||
</span><span id="move_ctes_to_top_level-683"><a href="#move_ctes_to_top_level-683"><span class="linenos">683</span></a><span class="sd"> defined at the top-level, so for example queries like:</span>
|
||||
|
@ -2178,11 +2178,11 @@ moved to the top level so that the final SQL code is valid from a syntax standpo
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#ensure_bools"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="ensure_bools-719"><a href="#ensure_bools-719"><span class="linenos">719</span></a><span class="k">def</span> <span class="nf">ensure_bools</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="ensure_bools-719"><a href="#ensure_bools-719"><span class="linenos">719</span></a><span class="k">def</span><span class="w"> </span><span class="nf">ensure_bools</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="ensure_bools-720"><a href="#ensure_bools-720"><span class="linenos">720</span></a><span class="w"> </span><span class="sd">"""Converts numeric values used in conditions into explicit boolean expressions."""</span>
|
||||
</span><span id="ensure_bools-721"><a href="#ensure_bools-721"><span class="linenos">721</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.canonicalize</span> <span class="kn">import</span> <span class="n">ensure_bools</span>
|
||||
</span><span id="ensure_bools-721"><a href="#ensure_bools-721"><span class="linenos">721</span></a> <span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.optimizer.canonicalize</span><span class="w"> </span><span class="kn">import</span> <span class="n">ensure_bools</span>
|
||||
</span><span id="ensure_bools-722"><a href="#ensure_bools-722"><span class="linenos">722</span></a>
|
||||
</span><span id="ensure_bools-723"><a href="#ensure_bools-723"><span class="linenos">723</span></a> <span class="k">def</span> <span class="nf">_ensure_bool</span><span class="p">(</span><span class="n">node</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="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="ensure_bools-723"><a href="#ensure_bools-723"><span class="linenos">723</span></a> <span class="k">def</span><span class="w"> </span><span class="nf">_ensure_bool</span><span class="p">(</span><span class="n">node</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="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="ensure_bools-724"><a href="#ensure_bools-724"><span class="linenos">724</span></a> <span class="k">if</span> <span class="p">(</span>
|
||||
</span><span id="ensure_bools-725"><a href="#ensure_bools-725"><span class="linenos">725</span></a> <span class="n">node</span><span class="o">.</span><span class="n">is_number</span>
|
||||
</span><span id="ensure_bools-726"><a href="#ensure_bools-726"><span class="linenos">726</span></a> <span class="ow">or</span> <span class="p">(</span>
|
||||
|
@ -2216,7 +2216,7 @@ moved to the top level so that the final SQL code is valid from a syntax standpo
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#unqualify_columns"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="unqualify_columns-740"><a href="#unqualify_columns-740"><span class="linenos">740</span></a><span class="k">def</span> <span class="nf">unqualify_columns</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="unqualify_columns-740"><a href="#unqualify_columns-740"><span class="linenos">740</span></a><span class="k">def</span><span class="w"> </span><span class="nf">unqualify_columns</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="unqualify_columns-741"><a href="#unqualify_columns-741"><span class="linenos">741</span></a> <span class="k">for</span> <span class="n">column</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">):</span>
|
||||
</span><span id="unqualify_columns-742"><a href="#unqualify_columns-742"><span class="linenos">742</span></a> <span class="c1"># We only wanna pop off the table, db, catalog args</span>
|
||||
</span><span id="unqualify_columns-743"><a href="#unqualify_columns-743"><span class="linenos">743</span></a> <span class="k">for</span> <span class="n">part</span> <span class="ow">in</span> <span class="n">column</span><span class="o">.</span><span class="n">parts</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]:</span>
|
||||
|
@ -2240,7 +2240,7 @@ moved to the top level so that the final SQL code is valid from a syntax standpo
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#remove_unique_constraints"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="remove_unique_constraints-749"><a href="#remove_unique_constraints-749"><span class="linenos">749</span></a><span class="k">def</span> <span class="nf">remove_unique_constraints</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="remove_unique_constraints-749"><a href="#remove_unique_constraints-749"><span class="linenos">749</span></a><span class="k">def</span><span class="w"> </span><span class="nf">remove_unique_constraints</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="remove_unique_constraints-750"><a href="#remove_unique_constraints-750"><span class="linenos">750</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">Create</span><span class="p">)</span>
|
||||
</span><span id="remove_unique_constraints-751"><a href="#remove_unique_constraints-751"><span class="linenos">751</span></a> <span class="k">for</span> <span class="n">constraint</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">find_all</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">UniqueColumnConstraint</span><span class="p">):</span>
|
||||
</span><span id="remove_unique_constraints-752"><a href="#remove_unique_constraints-752"><span class="linenos">752</span></a> <span class="k">if</span> <span class="n">constraint</span><span class="o">.</span><span class="n">parent</span><span class="p">:</span>
|
||||
|
@ -2264,7 +2264,7 @@ moved to the top level so that the final SQL code is valid from a syntax standpo
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#ctas_with_tmp_tables_to_create_tmp_view"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="ctas_with_tmp_tables_to_create_tmp_view-758"><a href="#ctas_with_tmp_tables_to_create_tmp_view-758"><span class="linenos">758</span></a><span class="k">def</span> <span class="nf">ctas_with_tmp_tables_to_create_tmp_view</span><span class="p">(</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="ctas_with_tmp_tables_to_create_tmp_view-758"><a href="#ctas_with_tmp_tables_to_create_tmp_view-758"><span class="linenos">758</span></a><span class="k">def</span><span class="w"> </span><span class="nf">ctas_with_tmp_tables_to_create_tmp_view</span><span class="p">(</span>
|
||||
</span><span id="ctas_with_tmp_tables_to_create_tmp_view-759"><a href="#ctas_with_tmp_tables_to_create_tmp_view-759"><span class="linenos">759</span></a> <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><span id="ctas_with_tmp_tables_to_create_tmp_view-760"><a href="#ctas_with_tmp_tables_to_create_tmp_view-760"><span class="linenos">760</span></a> <span class="n">tmp_storage_provider</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Callable</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">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">e</span><span class="p">:</span> <span class="n">e</span><span class="p">,</span>
|
||||
</span><span id="ctas_with_tmp_tables_to_create_tmp_view-761"><a href="#ctas_with_tmp_tables_to_create_tmp_view-761"><span class="linenos">761</span></a><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
|
@ -2303,7 +2303,7 @@ moved to the top level so that the final SQL code is valid from a syntax standpo
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#move_schema_columns_to_partitioned_by"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="move_schema_columns_to_partitioned_by-782"><a href="#move_schema_columns_to_partitioned_by-782"><span class="linenos">782</span></a><span class="k">def</span> <span class="nf">move_schema_columns_to_partitioned_by</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="move_schema_columns_to_partitioned_by-782"><a href="#move_schema_columns_to_partitioned_by-782"><span class="linenos">782</span></a><span class="k">def</span><span class="w"> </span><span class="nf">move_schema_columns_to_partitioned_by</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="move_schema_columns_to_partitioned_by-783"><a href="#move_schema_columns_to_partitioned_by-783"><span class="linenos">783</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="move_schema_columns_to_partitioned_by-784"><a href="#move_schema_columns_to_partitioned_by-784"><span class="linenos">784</span></a><span class="sd"> In Hive, the PARTITIONED BY property acts as an extension of a table's schema. When the</span>
|
||||
</span><span id="move_schema_columns_to_partitioned_by-785"><a href="#move_schema_columns_to_partitioned_by-785"><span class="linenos">785</span></a><span class="sd"> PARTITIONED BY value is an array of column names, they are transformed into a schema.</span>
|
||||
|
@ -2345,7 +2345,7 @@ The corresponding columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#move_partitioned_by_to_schema_columns"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="move_partitioned_by_to_schema_columns-805"><a href="#move_partitioned_by_to_schema_columns-805"><span class="linenos">805</span></a><span class="k">def</span> <span class="nf">move_partitioned_by_to_schema_columns</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="move_partitioned_by_to_schema_columns-805"><a href="#move_partitioned_by_to_schema_columns-805"><span class="linenos">805</span></a><span class="k">def</span><span class="w"> </span><span class="nf">move_partitioned_by_to_schema_columns</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="move_partitioned_by_to_schema_columns-806"><a href="#move_partitioned_by_to_schema_columns-806"><span class="linenos">806</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="move_partitioned_by_to_schema_columns-807"><a href="#move_partitioned_by_to_schema_columns-807"><span class="linenos">807</span></a><span class="sd"> Spark 3 supports both "HIVEFORMAT" and "DATASOURCE" formats for CREATE TABLE.</span>
|
||||
</span><span id="move_partitioned_by_to_schema_columns-808"><a href="#move_partitioned_by_to_schema_columns-808"><span class="linenos">808</span></a>
|
||||
|
@ -2389,7 +2389,7 @@ The corresponding columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#struct_kv_to_alias"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="struct_kv_to_alias-830"><a href="#struct_kv_to_alias-830"><span class="linenos">830</span></a><span class="k">def</span> <span class="nf">struct_kv_to_alias</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="struct_kv_to_alias-830"><a href="#struct_kv_to_alias-830"><span class="linenos">830</span></a><span class="k">def</span><span class="w"> </span><span class="nf">struct_kv_to_alias</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="struct_kv_to_alias-831"><a href="#struct_kv_to_alias-831"><span class="linenos">831</span></a><span class="w"> </span><span class="sd">"""Converts struct arguments to aliases, e.g. STRUCT(1 AS y)."""</span>
|
||||
</span><span id="struct_kv_to_alias-832"><a href="#struct_kv_to_alias-832"><span class="linenos">832</span></a> <span class="k">if</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">Struct</span><span class="p">):</span>
|
||||
</span><span id="struct_kv_to_alias-833"><a href="#struct_kv_to_alias-833"><span class="linenos">833</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span>
|
||||
|
@ -2420,7 +2420,7 @@ The corresponding columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#eliminate_join_marks"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="eliminate_join_marks-844"><a href="#eliminate_join_marks-844"><span class="linenos">844</span></a><span class="k">def</span> <span class="nf">eliminate_join_marks</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="eliminate_join_marks-844"><a href="#eliminate_join_marks-844"><span class="linenos">844</span></a><span class="k">def</span><span class="w"> </span><span class="nf">eliminate_join_marks</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="eliminate_join_marks-845"><a href="#eliminate_join_marks-845"><span class="linenos">845</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="eliminate_join_marks-846"><a href="#eliminate_join_marks-846"><span class="linenos">846</span></a><span class="sd"> Remove join marks from an AST. This rule assumes that all marked columns are qualified.</span>
|
||||
</span><span id="eliminate_join_marks-847"><a href="#eliminate_join_marks-847"><span class="linenos">847</span></a><span class="sd"> If this does not hold for a query, consider running `sqlglot.optimizer.qualify` first.</span>
|
||||
|
@ -2435,7 +2435,7 @@ The corresponding columns are removed from the create statement.</p>
|
|||
</span><span id="eliminate_join_marks-856"><a href="#eliminate_join_marks-856"><span class="linenos">856</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="eliminate_join_marks-857"><a href="#eliminate_join_marks-857"><span class="linenos">857</span></a><span class="sd"> The AST with join marks removed.</span>
|
||||
</span><span id="eliminate_join_marks-858"><a href="#eliminate_join_marks-858"><span class="linenos">858</span></a><span class="sd"> """</span>
|
||||
</span><span id="eliminate_join_marks-859"><a href="#eliminate_join_marks-859"><span class="linenos">859</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.scope</span> <span class="kn">import</span> <span class="n">traverse_scope</span>
|
||||
</span><span id="eliminate_join_marks-859"><a href="#eliminate_join_marks-859"><span class="linenos">859</span></a> <span class="kn">from</span><span class="w"> </span><span class="nn">sqlglot.optimizer.scope</span><span class="w"> </span><span class="kn">import</span> <span class="n">traverse_scope</span>
|
||||
</span><span id="eliminate_join_marks-860"><a href="#eliminate_join_marks-860"><span class="linenos">860</span></a>
|
||||
</span><span id="eliminate_join_marks-861"><a href="#eliminate_join_marks-861"><span class="linenos">861</span></a> <span class="k">for</span> <span class="n">scope</span> <span class="ow">in</span> <span class="n">traverse_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">):</span>
|
||||
</span><span id="eliminate_join_marks-862"><a href="#eliminate_join_marks-862"><span class="linenos">862</span></a> <span class="n">query</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">expression</span>
|
||||
|
@ -2556,7 +2556,7 @@ If this does not hold for a query, consider running <code><a href="optimizer/qua
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#any_to_exists"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="any_to_exists-946"><a href="#any_to_exists-946"><span class="linenos">946</span></a><span class="k">def</span> <span class="nf">any_to_exists</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="any_to_exists-946"><a href="#any_to_exists-946"><span class="linenos">946</span></a><span class="k">def</span><span class="w"> </span><span class="nf">any_to_exists</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="any_to_exists-947"><a href="#any_to_exists-947"><span class="linenos">947</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="any_to_exists-948"><a href="#any_to_exists-948"><span class="linenos">948</span></a><span class="sd"> Transform ANY operator to Spark's EXISTS</span>
|
||||
</span><span id="any_to_exists-949"><a href="#any_to_exists-949"><span class="linenos">949</span></a>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue