Merging upstream version 18.17.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
fdf9ca761f
commit
04c9be45a8
90 changed files with 46581 additions and 43319 deletions
File diff suppressed because one or more lines are too long
|
@ -76,8 +76,8 @@
|
|||
</span><span id="L-12"><a href="#L-12"><span class="linenos">12</span></a><span class="n">__version_tuple__</span><span class="p">:</span> <span class="n">VERSION_TUPLE</span>
|
||||
</span><span id="L-13"><a href="#L-13"><span class="linenos">13</span></a><span class="n">version_tuple</span><span class="p">:</span> <span class="n">VERSION_TUPLE</span>
|
||||
</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="n">__version__</span> <span class="o">=</span> <span class="n">version</span> <span class="o">=</span> <span class="s1">'18.12.0'</span>
|
||||
</span><span id="L-16"><a href="#L-16"><span class="linenos">16</span></a><span class="n">__version_tuple__</span> <span class="o">=</span> <span class="n">version_tuple</span> <span class="o">=</span> <span class="p">(</span><span class="mi">18</span><span class="p">,</span> <span class="mi">12</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
|
||||
</span><span id="L-15"><a href="#L-15"><span class="linenos">15</span></a><span class="n">__version__</span> <span class="o">=</span> <span class="n">version</span> <span class="o">=</span> <span class="s1">'18.16.1'</span>
|
||||
</span><span id="L-16"><a href="#L-16"><span class="linenos">16</span></a><span class="n">__version_tuple__</span> <span class="o">=</span> <span class="n">version_tuple</span> <span class="o">=</span> <span class="p">(</span><span class="mi">18</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -97,7 +97,7 @@
|
|||
<section id="version">
|
||||
<div class="attr variable">
|
||||
<span class="name">version</span><span class="annotation">: str</span> =
|
||||
<span class="default_value">'18.12.0'</span>
|
||||
<span class="default_value">'18.16.1'</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
@ -109,7 +109,7 @@
|
|||
<section id="version_tuple">
|
||||
<div class="attr variable">
|
||||
<span class="name">version_tuple</span><span class="annotation">: object</span> =
|
||||
<span class="default_value">(18, 12, 0)</span>
|
||||
<span class="default_value">(18, 16, 1)</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
|
@ -777,7 +777,7 @@
|
|||
<div class="attr function">
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">createDataFrame</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">data</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180622968000'</span><span class="o">></span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180622968000'</span><span class="o">></span><span class="p">],</span> <span class="n">Tuple</span><span class="p">]]</span>,</span><span class="param"> <span class="n">schema</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180622557920'</span><span class="o">></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">samplingRatio</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">verifySchema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
|
||||
<span class="name">createDataFrame</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">data</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452315022240'</span><span class="o">></span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452315022240'</span><span class="o">></span><span class="p">],</span> <span class="n">Tuple</span><span class="p">]]</span>,</span><span class="param"> <span class="n">schema</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452314825728'</span><span class="o">></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">samplingRatio</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">verifySchema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="SparkSession.createDataFrame-view-source"><span>View Source</span></label>
|
||||
|
||||
|
@ -1829,7 +1829,7 @@
|
|||
<input id="DataFrame.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||
<div class="attr function">
|
||||
|
||||
<span class="name">DataFrame</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">spark</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180625818192'</span><span class="o">></span>,</span><span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Select">sqlglot.expressions.Select</a></span>,</span><span class="param"> <span class="n">branch_id</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">sequence_id</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">last_op</span><span class="p">:</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">dataframe</span><span class="o">.</span><span class="n">sql</span><span class="o">.</span><span class="n">operations</span><span class="o">.</span><span class="n">Operation</span> <span class="o">=</span> <span class="o"><</span><span class="n">Operation</span><span class="o">.</span><span class="n">INIT</span><span class="p">:</span> <span class="o">-</span><span class="mi">1</span><span class="o">></span>,</span><span class="param"> <span class="n">pending_hints</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">output_expression_container</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180626003792'</span><span class="o">></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span>)</span>
|
||||
<span class="name">DataFrame</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">spark</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452319856048'</span><span class="o">></span>,</span><span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Select">sqlglot.expressions.Select</a></span>,</span><span class="param"> <span class="n">branch_id</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">sequence_id</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">last_op</span><span class="p">:</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">dataframe</span><span class="o">.</span><span class="n">sql</span><span class="o">.</span><span class="n">operations</span><span class="o">.</span><span class="n">Operation</span> <span class="o">=</span> <span class="o"><</span><span class="n">Operation</span><span class="o">.</span><span class="n">INIT</span><span class="p">:</span> <span class="o">-</span><span class="mi">1</span><span class="o">></span>,</span><span class="param"> <span class="n">pending_hints</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">output_expression_container</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452320025888'</span><span class="o">></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span>)</span>
|
||||
|
||||
<label class="view-source-button" for="DataFrame.__init__-view-source"><span>View Source</span></label>
|
||||
|
||||
|
@ -2018,7 +2018,7 @@
|
|||
<div class="attr function">
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">sql</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">dialect</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180622657328'</span><span class="o">></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">optimize</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span>:</span></span>
|
||||
<span class="name">sql</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">dialect</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452315728432'</span><span class="o">></span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">optimize</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="DataFrame.sql-view-source"><span>View Source</span></label>
|
||||
|
||||
|
@ -2773,7 +2773,7 @@ is unlikely to come up.</p>
|
|||
<div class="decorator">@operation(Operation.FROM)</div>
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">fillna</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180621314368'</span><span class="o">></span>,</span><span class="param"> <span class="n">subset</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
|
||||
<span class="name">fillna</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452315832640'</span><span class="o">></span>,</span><span class="param"> <span class="n">subset</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="DataFrame.fillna-view-source"><span>View Source</span></label>
|
||||
|
||||
|
@ -2842,7 +2842,7 @@ and check if it matches the type of the value provided. If not then make it null
|
|||
<div class="decorator">@operation(Operation.FROM)</div>
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">replace</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">to_replace</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Dict</span><span class="p">]</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">subset</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">Collection</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180621772976'</span><span class="o">></span><span class="p">],</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180621772976'</span><span class="o">></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
|
||||
<span class="name">replace</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">to_replace</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Dict</span><span class="p">]</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">subset</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">Collection</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452313861280'</span><span class="o">></span><span class="p">],</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452313861280'</span><span class="o">></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="DataFrame.replace-view-source"><span>View Source</span></label>
|
||||
|
||||
|
@ -3047,7 +3047,7 @@ and check if it matches the type of the value provided. If not then make it null
|
|||
<div class="decorator">@operation(Operation.NO_OP)</div>
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">repartition</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">numPartitions</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180622057408'</span><span class="o">></span><span class="p">]</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180622201840'</span><span class="o">></span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
|
||||
<span class="name">repartition</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">numPartitions</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452313784256'</span><span class="o">></span><span class="p">]</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452314075040'</span><span class="o">></span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="DataFrame.repartition-view-source"><span>View Source</span></label>
|
||||
|
||||
|
@ -3765,7 +3765,7 @@ and check if it matches the type of the value provided. If not then make it null
|
|||
<input id="Column.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||
<div class="attr function">
|
||||
|
||||
<span class="name">Column</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180623815392'</span><span class="o">></span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span></span>)</span>
|
||||
<span class="name">Column</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452317817648'</span><span class="o">></span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span></span>)</span>
|
||||
|
||||
<label class="view-source-button" for="Column.__init__-view-source"><span>View Source</span></label>
|
||||
|
||||
|
@ -3809,7 +3809,7 @@ and check if it matches the type of the value provided. If not then make it null
|
|||
<div class="decorator">@classmethod</div>
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">ensure_col</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180622248832'</span><span class="o">></span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||
<span class="name">ensure_col</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452314678176'</span><span class="o">></span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="Column.ensure_col-view-source"><span>View Source</span></label>
|
||||
|
||||
|
@ -3830,7 +3830,7 @@ and check if it matches the type of the value provided. If not then make it null
|
|||
<div class="decorator">@classmethod</div>
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">ensure_cols</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">args</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180622270880'</span><span class="o">></span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="n"><a href="#Column">Column</a></span><span class="p">]</span>:</span></span>
|
||||
<span class="name">ensure_cols</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">args</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452314457488'</span><span class="o">></span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="n"><a href="#Column">Column</a></span><span class="p">]</span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="Column.ensure_cols-view-source"><span>View Source</span></label>
|
||||
|
||||
|
@ -3851,7 +3851,7 @@ and check if it matches the type of the value provided. If not then make it null
|
|||
<div class="decorator">@classmethod</div>
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">invoke_anonymous_function</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">column</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180620601152'</span><span class="o">></span><span class="p">]</span>,</span><span class="param"> <span class="n">func_name</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180620379088'</span><span class="o">></span><span class="p">]</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||
<span class="name">invoke_anonymous_function</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">column</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452314721072'</span><span class="o">></span><span class="p">]</span>,</span><span class="param"> <span class="n">func_name</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452314417088'</span><span class="o">></span><span class="p">]</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="Column.invoke_anonymous_function-view-source"><span>View Source</span></label>
|
||||
|
||||
|
@ -3878,7 +3878,7 @@ and check if it matches the type of the value provided. If not then make it null
|
|||
<div class="decorator">@classmethod</div>
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">invoke_expression_over_column</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">column</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180620187376'</span><span class="o">></span><span class="p">]</span>,</span><span class="param"> <span class="n">callable_expression</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||
<span class="name">invoke_expression_over_column</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">column</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452314715216'</span><span class="o">></span><span class="p">]</span>,</span><span class="param"> <span class="n">callable_expression</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="Column.invoke_expression_over_column-view-source"><span>View Source</span></label>
|
||||
|
||||
|
@ -3915,7 +3915,7 @@ and check if it matches the type of the value provided. If not then make it null
|
|||
<div class="attr function">
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">binary_op</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">klass</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="n">other</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180620223024'</span><span class="o">></span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||
<span class="name">binary_op</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">klass</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="n">other</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452314588704'</span><span class="o">></span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="Column.binary_op-view-source"><span>View Source</span></label>
|
||||
|
||||
|
@ -3936,7 +3936,7 @@ and check if it matches the type of the value provided. If not then make it null
|
|||
<div class="attr function">
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">inverse_binary_op</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">klass</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="n">other</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180620447264'</span><span class="o">></span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||
<span class="name">inverse_binary_op</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">klass</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="n">other</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452314632720'</span><span class="o">></span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="Column.inverse_binary_op-view-source"><span>View Source</span></label>
|
||||
|
||||
|
@ -4502,7 +4502,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
|
|||
<div class="attr function">
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">isin</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180620677120'</span><span class="o">></span><span class="p">,</span> <span class="n">Iterable</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180620677120'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">):</span></span>
|
||||
<span class="name">isin</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452314786560'</span><span class="o">></span><span class="p">,</span> <span class="n">Iterable</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452314786560'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">):</span></span>
|
||||
|
||||
<label class="view-source-button" for="Column.isin-view-source"><span>View Source</span></label>
|
||||
|
||||
|
@ -4523,7 +4523,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
|
|||
<div class="attr function">
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">between</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">lowerBound</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180620785216'</span><span class="o">></span>,</span><span class="param"> <span class="n">upperBound</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180620872528'</span><span class="o">></span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||
<span class="name">between</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">lowerBound</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452312840752'</span><span class="o">></span>,</span><span class="param"> <span class="n">upperBound</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452312878912'</span><span class="o">></span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="Column.between-view-source"><span>View Source</span></label>
|
||||
|
||||
|
@ -4558,7 +4558,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
|
|||
<div class="attr function">
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">over</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">window</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180621601872'</span><span class="o">></span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||
<span class="name">over</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">window</span><span class="p">:</span> <span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452315623488'</span><span class="o">></span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="Column.over-view-source"><span>View Source</span></label>
|
||||
|
||||
|
@ -4803,7 +4803,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
|
|||
<div class="decorator">@classmethod</div>
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">partitionBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180621091568'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180621091568'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
|
||||
<span class="name">partitionBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452313196160'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452313196160'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="Window.partitionBy-view-source"><span>View Source</span></label>
|
||||
|
||||
|
@ -4824,7 +4824,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
|
|||
<div class="decorator">@classmethod</div>
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">orderBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180621079648'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180621079648'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
|
||||
<span class="name">orderBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452313545552'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452313545552'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="Window.orderBy-view-source"><span>View Source</span></label>
|
||||
|
||||
|
@ -5064,7 +5064,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
|
|||
<div class="attr function">
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">partitionBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180620960832'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180620960832'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
|
||||
<span class="name">partitionBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452313094016'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452313094016'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="WindowSpec.partitionBy-view-source"><span>View Source</span></label>
|
||||
|
||||
|
@ -5091,7 +5091,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
|
|||
<div class="attr function">
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">orderBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180619970784'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140180619970784'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
|
||||
<span class="name">orderBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452313178048'</span><span class="o">></span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o"><</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">'140452313178048'</span><span class="o">></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="WindowSpec.orderBy-view-source"><span>View Source</span></label>
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -345,6 +345,9 @@
|
|||
<li>
|
||||
<a class="function" href="#timestamptrunc_sql">timestamptrunc_sql</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="function" href="#no_timestamp_sql">no_timestamp_sql</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="function" href="#locate_to_strposition">locate_to_strposition</a>
|
||||
</li>
|
||||
|
@ -399,9 +402,6 @@
|
|||
<li>
|
||||
<a class="function" href="#pivot_column_names">pivot_column_names</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="function" href="#simplify_literal">simplify_literal</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="function" href="#binary_from_function">binary_from_function</a>
|
||||
</li>
|
||||
|
@ -426,6 +426,9 @@
|
|||
<li>
|
||||
<a class="function" href="#move_insert_cte_sql">move_insert_cte_sql</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="function" href="#generatedasidentitycolumnconstraint_sql">generatedasidentitycolumnconstraint_sql</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
|
@ -461,7 +464,7 @@
|
|||
</span><span id="L-10"><a href="#L-10"><span class="linenos"> 10</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="nn">sqlglot.helper</span> <span class="kn">import</span> <span class="n">flatten</span><span class="p">,</span> <span class="n">seq_get</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.parser</span> <span class="kn">import</span> <span class="n">Parser</span>
|
||||
</span><span id="L-13"><a href="#L-13"><span class="linenos"> 13</span></a><span class="kn">from</span> <span class="nn">sqlglot.time</span> <span class="kn">import</span> <span class="n">format_time</span>
|
||||
</span><span id="L-13"><a href="#L-13"><span class="linenos"> 13</span></a><span class="kn">from</span> <span class="nn">sqlglot.time</span> <span class="kn">import</span> <span class="n">TIMEZONES</span><span class="p">,</span> <span class="n">format_time</span>
|
||||
</span><span id="L-14"><a href="#L-14"><span class="linenos"> 14</span></a><span class="kn">from</span> <span class="nn">sqlglot.tokens</span> <span class="kn">import</span> <span class="n">Token</span><span class="p">,</span> <span class="n">Tokenizer</span><span class="p">,</span> <span class="n">TokenType</span>
|
||||
</span><span id="L-15"><a href="#L-15"><span class="linenos"> 15</span></a><span class="kn">from</span> <span class="nn">sqlglot.trie</span> <span class="kn">import</span> <span class="n">new_trie</span>
|
||||
</span><span id="L-16"><a href="#L-16"><span class="linenos"> 16</span></a>
|
||||
|
@ -1046,215 +1049,233 @@
|
|||
</span><span id="L-595"><a href="#L-595"><span class="linenos">595</span></a> <span class="p">)</span>
|
||||
</span><span id="L-596"><a href="#L-596"><span class="linenos">596</span></a>
|
||||
</span><span id="L-597"><a href="#L-597"><span class="linenos">597</span></a>
|
||||
</span><span id="L-598"><a href="#L-598"><span class="linenos">598</span></a><span class="k">def</span> <span class="nf">locate_to_strposition</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-599"><a href="#L-599"><span class="linenos">599</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">(</span>
|
||||
</span><span id="L-600"><a href="#L-600"><span class="linenos">600</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">substr</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">position</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
|
||||
</span><span id="L-601"><a href="#L-601"><span class="linenos">601</span></a> <span class="p">)</span>
|
||||
</span><span id="L-602"><a href="#L-602"><span class="linenos">602</span></a>
|
||||
</span><span id="L-603"><a href="#L-603"><span class="linenos">603</span></a>
|
||||
</span><span id="L-604"><a href="#L-604"><span class="linenos">604</span></a><span class="k">def</span> <span class="nf">strposition_to_locate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">StrPosition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-605"><a href="#L-605"><span class="linenos">605</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
|
||||
</span><span id="L-606"><a href="#L-606"><span class="linenos">606</span></a> <span class="s2">"LOCATE"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"substr"</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"position"</span><span class="p">)</span>
|
||||
</span><span id="L-607"><a href="#L-607"><span class="linenos">607</span></a> <span class="p">)</span>
|
||||
</span><span id="L-608"><a href="#L-608"><span class="linenos">608</span></a>
|
||||
</span><span id="L-598"><a href="#L-598"><span class="linenos">598</span></a><span class="k">def</span> <span class="nf">no_timestamp_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Timestamp</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-599"><a href="#L-599"><span class="linenos">599</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">:</span>
|
||||
</span><span id="L-600"><a href="#L-600"><span class="linenos">600</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</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">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">))</span>
|
||||
</span><span id="L-601"><a href="#L-601"><span class="linenos">601</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="n">TIMEZONES</span><span class="p">:</span>
|
||||
</span><span id="L-602"><a href="#L-602"><span class="linenos">602</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
|
||||
</span><span id="L-603"><a href="#L-603"><span class="linenos">603</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">(</span>
|
||||
</span><span id="L-604"><a href="#L-604"><span class="linenos">604</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">),</span>
|
||||
</span><span id="L-605"><a href="#L-605"><span class="linenos">605</span></a> <span class="n">zone</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span>
|
||||
</span><span id="L-606"><a href="#L-606"><span class="linenos">606</span></a> <span class="p">)</span>
|
||||
</span><span id="L-607"><a href="#L-607"><span class="linenos">607</span></a> <span class="p">)</span>
|
||||
</span><span id="L-608"><a href="#L-608"><span class="linenos">608</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-609"><a href="#L-609"><span class="linenos">609</span></a>
|
||||
</span><span id="L-610"><a href="#L-610"><span class="linenos">610</span></a><span class="k">def</span> <span class="nf">left_to_substring_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Left</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-611"><a href="#L-611"><span class="linenos">611</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="L-612"><a href="#L-612"><span class="linenos">612</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
|
||||
</span><span id="L-613"><a href="#L-613"><span class="linenos">613</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">(</span>
|
||||
</span><span id="L-614"><a href="#L-614"><span class="linenos">614</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 class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="n">length</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="L-615"><a href="#L-615"><span class="linenos">615</span></a> <span class="p">)</span>
|
||||
</span><span id="L-616"><a href="#L-616"><span class="linenos">616</span></a> <span class="p">)</span>
|
||||
</span><span id="L-617"><a href="#L-617"><span class="linenos">617</span></a>
|
||||
</span><span id="L-618"><a href="#L-618"><span class="linenos">618</span></a>
|
||||
</span><span id="L-619"><a href="#L-619"><span class="linenos">619</span></a><span class="k">def</span> <span class="nf">right_to_substring_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Left</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-620"><a href="#L-620"><span class="linenos">620</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="L-621"><a href="#L-621"><span class="linenos">621</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
|
||||
</span><span id="L-622"><a href="#L-622"><span class="linenos">622</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">(</span>
|
||||
</span><span id="L-623"><a href="#L-623"><span class="linenos">623</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 class="p">,</span>
|
||||
</span><span id="L-624"><a href="#L-624"><span class="linenos">624</span></a> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> <span class="o">-</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span> <span class="o">-</span> <span class="mi">1</span><span class="p">),</span>
|
||||
</span><span id="L-625"><a href="#L-625"><span class="linenos">625</span></a> <span class="p">)</span>
|
||||
</span><span id="L-626"><a href="#L-626"><span class="linenos">626</span></a> <span class="p">)</span>
|
||||
</span><span id="L-627"><a href="#L-627"><span class="linenos">627</span></a>
|
||||
</span><span id="L-628"><a href="#L-628"><span class="linenos">628</span></a>
|
||||
</span><span id="L-629"><a href="#L-629"><span class="linenos">629</span></a><span class="k">def</span> <span class="nf">timestrtotime_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">TimeStrToTime</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-630"><a href="#L-630"><span class="linenos">630</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</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">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"timestamp"</span><span class="p">))</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 class="k">def</span> <span class="nf">locate_to_strposition</span><span class="p">(</span><span class="n">args</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="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">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">(</span>
|
||||
</span><span id="L-613"><a href="#L-613"><span class="linenos">613</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">substr</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">position</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
|
||||
</span><span id="L-614"><a href="#L-614"><span class="linenos">614</span></a> <span class="p">)</span>
|
||||
</span><span id="L-615"><a href="#L-615"><span class="linenos">615</span></a>
|
||||
</span><span id="L-616"><a href="#L-616"><span class="linenos">616</span></a>
|
||||
</span><span id="L-617"><a href="#L-617"><span class="linenos">617</span></a><span class="k">def</span> <span class="nf">strposition_to_locate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">StrPosition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-618"><a href="#L-618"><span class="linenos">618</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
|
||||
</span><span id="L-619"><a href="#L-619"><span class="linenos">619</span></a> <span class="s2">"LOCATE"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"substr"</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"position"</span><span class="p">)</span>
|
||||
</span><span id="L-620"><a href="#L-620"><span class="linenos">620</span></a> <span class="p">)</span>
|
||||
</span><span id="L-621"><a href="#L-621"><span class="linenos">621</span></a>
|
||||
</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 class="k">def</span> <span class="nf">left_to_substring_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Left</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-624"><a href="#L-624"><span class="linenos">624</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="L-625"><a href="#L-625"><span class="linenos">625</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
|
||||
</span><span id="L-626"><a href="#L-626"><span class="linenos">626</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">(</span>
|
||||
</span><span id="L-627"><a href="#L-627"><span class="linenos">627</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 class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="n">length</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="L-628"><a href="#L-628"><span class="linenos">628</span></a> <span class="p">)</span>
|
||||
</span><span id="L-629"><a href="#L-629"><span class="linenos">629</span></a> <span class="p">)</span>
|
||||
</span><span id="L-630"><a href="#L-630"><span class="linenos">630</span></a>
|
||||
</span><span id="L-631"><a href="#L-631"><span class="linenos">631</span></a>
|
||||
</span><span id="L-632"><a href="#L-632"><span class="linenos">632</span></a>
|
||||
</span><span id="L-633"><a href="#L-633"><span class="linenos">633</span></a><span class="k">def</span> <span class="nf">datestrtodate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">DateStrToDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-634"><a href="#L-634"><span class="linenos">634</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</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">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"date"</span><span class="p">))</span>
|
||||
</span><span id="L-635"><a href="#L-635"><span class="linenos">635</span></a>
|
||||
</span><span id="L-636"><a href="#L-636"><span class="linenos">636</span></a>
|
||||
</span><span id="L-637"><a href="#L-637"><span class="linenos">637</span></a><span class="c1"># Used for Presto and Duckdb which use functions that don't support charset, and assume utf-8</span>
|
||||
</span><span id="L-638"><a href="#L-638"><span class="linenos">638</span></a><span class="k">def</span> <span class="nf">encode_decode_sql</span><span class="p">(</span>
|
||||
</span><span id="L-639"><a href="#L-639"><span class="linenos">639</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">replace</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</span><span id="L-640"><a href="#L-640"><span class="linenos">640</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-641"><a href="#L-641"><span class="linenos">641</span></a> <span class="n">charset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"charset"</span><span class="p">)</span>
|
||||
</span><span id="L-642"><a href="#L-642"><span class="linenos">642</span></a> <span class="k">if</span> <span class="n">charset</span> <span class="ow">and</span> <span class="n">charset</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">!=</span> <span class="s2">"utf-8"</span><span class="p">:</span>
|
||||
</span><span id="L-643"><a href="#L-643"><span class="linenos">643</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected utf-8 character set, got </span><span class="si">{</span><span class="n">charset</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
</span><span id="L-632"><a href="#L-632"><span class="linenos">632</span></a><span class="k">def</span> <span class="nf">right_to_substring_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Left</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-633"><a href="#L-633"><span class="linenos">633</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="L-634"><a href="#L-634"><span class="linenos">634</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
|
||||
</span><span id="L-635"><a href="#L-635"><span class="linenos">635</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">(</span>
|
||||
</span><span id="L-636"><a href="#L-636"><span class="linenos">636</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 class="p">,</span>
|
||||
</span><span id="L-637"><a href="#L-637"><span class="linenos">637</span></a> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> <span class="o">-</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span> <span class="o">-</span> <span class="mi">1</span><span class="p">),</span>
|
||||
</span><span id="L-638"><a href="#L-638"><span class="linenos">638</span></a> <span class="p">)</span>
|
||||
</span><span id="L-639"><a href="#L-639"><span class="linenos">639</span></a> <span class="p">)</span>
|
||||
</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><span id="L-642"><a href="#L-642"><span class="linenos">642</span></a><span class="k">def</span> <span class="nf">timestrtotime_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">TimeStrToTime</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-643"><a href="#L-643"><span class="linenos">643</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</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">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"timestamp"</span><span class="p">))</span>
|
||||
</span><span id="L-644"><a href="#L-644"><span class="linenos">644</span></a>
|
||||
</span><span id="L-645"><a href="#L-645"><span class="linenos">645</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"replace"</span><span class="p">)</span> <span class="k">if</span> <span class="n">replace</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span>
|
||||
</span><span id="L-646"><a href="#L-646"><span class="linenos">646</span></a>
|
||||
</span><span id="L-647"><a href="#L-647"><span class="linenos">647</span></a>
|
||||
</span><span id="L-648"><a href="#L-648"><span class="linenos">648</span></a><span class="k">def</span> <span class="nf">min_or_least</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Min</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-649"><a href="#L-649"><span class="linenos">649</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"LEAST"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">"MIN"</span>
|
||||
</span><span id="L-650"><a href="#L-650"><span class="linenos">650</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-651"><a href="#L-651"><span class="linenos">651</span></a>
|
||||
</span><span id="L-652"><a href="#L-652"><span class="linenos">652</span></a>
|
||||
</span><span id="L-653"><a href="#L-653"><span class="linenos">653</span></a><span class="k">def</span> <span class="nf">max_or_greatest</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Max</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-654"><a href="#L-654"><span class="linenos">654</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"GREATEST"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">"MAX"</span>
|
||||
</span><span id="L-655"><a href="#L-655"><span class="linenos">655</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-656"><a href="#L-656"><span class="linenos">656</span></a>
|
||||
</span><span id="L-645"><a href="#L-645"><span class="linenos">645</span></a>
|
||||
</span><span id="L-646"><a href="#L-646"><span class="linenos">646</span></a><span class="k">def</span> <span class="nf">datestrtodate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">DateStrToDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-647"><a href="#L-647"><span class="linenos">647</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</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">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"date"</span><span class="p">))</span>
|
||||
</span><span id="L-648"><a href="#L-648"><span class="linenos">648</span></a>
|
||||
</span><span id="L-649"><a href="#L-649"><span class="linenos">649</span></a>
|
||||
</span><span id="L-650"><a href="#L-650"><span class="linenos">650</span></a><span class="c1"># Used for Presto and Duckdb which use functions that don't support charset, and assume utf-8</span>
|
||||
</span><span id="L-651"><a href="#L-651"><span class="linenos">651</span></a><span class="k">def</span> <span class="nf">encode_decode_sql</span><span class="p">(</span>
|
||||
</span><span id="L-652"><a href="#L-652"><span class="linenos">652</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">replace</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</span><span id="L-653"><a href="#L-653"><span class="linenos">653</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-654"><a href="#L-654"><span class="linenos">654</span></a> <span class="n">charset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"charset"</span><span class="p">)</span>
|
||||
</span><span id="L-655"><a href="#L-655"><span class="linenos">655</span></a> <span class="k">if</span> <span class="n">charset</span> <span class="ow">and</span> <span class="n">charset</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">!=</span> <span class="s2">"utf-8"</span><span class="p">:</span>
|
||||
</span><span id="L-656"><a href="#L-656"><span class="linenos">656</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected utf-8 character set, got </span><span class="si">{</span><span class="n">charset</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
</span><span id="L-657"><a href="#L-657"><span class="linenos">657</span></a>
|
||||
</span><span id="L-658"><a href="#L-658"><span class="linenos">658</span></a><span class="k">def</span> <span class="nf">count_if_to_sum</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">CountIf</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-659"><a href="#L-659"><span class="linenos">659</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span>
|
||||
</span><span id="L-658"><a href="#L-658"><span class="linenos">658</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"replace"</span><span class="p">)</span> <span class="k">if</span> <span class="n">replace</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span>
|
||||
</span><span id="L-659"><a href="#L-659"><span class="linenos">659</span></a>
|
||||
</span><span id="L-660"><a href="#L-660"><span class="linenos">660</span></a>
|
||||
</span><span id="L-661"><a href="#L-661"><span class="linenos">661</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">):</span>
|
||||
</span><span id="L-662"><a href="#L-662"><span class="linenos">662</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
</span><span id="L-663"><a href="#L-663"><span class="linenos">663</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"DISTINCT is not supported when converting COUNT_IF to SUM"</span><span class="p">)</span>
|
||||
</span><span id="L-661"><a href="#L-661"><span class="linenos">661</span></a><span class="k">def</span> <span class="nf">min_or_least</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Min</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-662"><a href="#L-662"><span class="linenos">662</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"LEAST"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">"MIN"</span>
|
||||
</span><span id="L-663"><a href="#L-663"><span class="linenos">663</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-664"><a href="#L-664"><span class="linenos">664</span></a>
|
||||
</span><span id="L-665"><a href="#L-665"><span class="linenos">665</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"sum"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"if"</span><span class="p">,</span> <span class="n">cond</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
|
||||
</span><span id="L-666"><a href="#L-666"><span class="linenos">666</span></a>
|
||||
</span><span id="L-667"><a href="#L-667"><span class="linenos">667</span></a>
|
||||
</span><span id="L-668"><a href="#L-668"><span class="linenos">668</span></a><span class="k">def</span> <span class="nf">trim_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Trim</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-669"><a href="#L-669"><span class="linenos">669</span></a> <span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span>
|
||||
</span><span id="L-670"><a href="#L-670"><span class="linenos">670</span></a> <span class="n">trim_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span>
|
||||
</span><span id="L-671"><a href="#L-671"><span class="linenos">671</span></a> <span class="n">remove_chars</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span>
|
||||
</span><span id="L-672"><a href="#L-672"><span class="linenos">672</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"collation"</span><span class="p">)</span>
|
||||
</span><span id="L-665"><a href="#L-665"><span class="linenos">665</span></a>
|
||||
</span><span id="L-666"><a href="#L-666"><span class="linenos">666</span></a><span class="k">def</span> <span class="nf">max_or_greatest</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Max</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-667"><a href="#L-667"><span class="linenos">667</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"GREATEST"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">"MAX"</span>
|
||||
</span><span id="L-668"><a href="#L-668"><span class="linenos">668</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-669"><a href="#L-669"><span class="linenos">669</span></a>
|
||||
</span><span id="L-670"><a href="#L-670"><span class="linenos">670</span></a>
|
||||
</span><span id="L-671"><a href="#L-671"><span class="linenos">671</span></a><span class="k">def</span> <span class="nf">count_if_to_sum</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">CountIf</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-672"><a href="#L-672"><span class="linenos">672</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span>
|
||||
</span><span id="L-673"><a href="#L-673"><span class="linenos">673</span></a>
|
||||
</span><span id="L-674"><a href="#L-674"><span class="linenos">674</span></a> <span class="c1"># Use TRIM/LTRIM/RTRIM syntax if the expression isn't database-specific</span>
|
||||
</span><span id="L-675"><a href="#L-675"><span class="linenos">675</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">remove_chars</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">collation</span><span class="p">:</span>
|
||||
</span><span id="L-676"><a href="#L-676"><span class="linenos">676</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">trim_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-674"><a href="#L-674"><span class="linenos">674</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">):</span>
|
||||
</span><span id="L-675"><a href="#L-675"><span class="linenos">675</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
</span><span id="L-676"><a href="#L-676"><span class="linenos">676</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"DISTINCT is not supported when converting COUNT_IF to SUM"</span><span class="p">)</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 class="n">trim_type</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">trim_type</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">trim_type</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-679"><a href="#L-679"><span class="linenos">679</span></a> <span class="n">remove_chars</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">remove_chars</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">remove_chars</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-680"><a href="#L-680"><span class="linenos">680</span></a> <span class="n">from_part</span> <span class="o">=</span> <span class="s2">"FROM "</span> <span class="k">if</span> <span class="n">trim_type</span> <span class="ow">or</span> <span class="n">remove_chars</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-681"><a href="#L-681"><span class="linenos">681</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collation</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collation</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-682"><a href="#L-682"><span class="linenos">682</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TRIM(</span><span class="si">{</span><span class="n">trim_type</span><span class="si">}{</span><span class="n">remove_chars</span><span class="si">}{</span><span class="n">from_part</span><span class="si">}{</span><span class="n">target</span><span class="si">}{</span><span class="n">collation</span><span class="si">}</span><span class="s2">)"</span>
|
||||
</span><span id="L-683"><a href="#L-683"><span class="linenos">683</span></a>
|
||||
</span><span id="L-684"><a href="#L-684"><span class="linenos">684</span></a>
|
||||
</span><span id="L-685"><a href="#L-685"><span class="linenos">685</span></a><span class="k">def</span> <span class="nf">str_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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-686"><a href="#L-686"><span class="linenos">686</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"STRPTIME"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span>
|
||||
</span><span id="L-687"><a href="#L-687"><span class="linenos">687</span></a>
|
||||
</span><span id="L-688"><a href="#L-688"><span class="linenos">688</span></a>
|
||||
</span><span id="L-689"><a href="#L-689"><span class="linenos">689</span></a><span class="k">def</span> <span class="nf">ts_or_ds_to_date_sql</span><span class="p">(</span><span class="n">dialect</span><span class="p">:</span> <span class="nb">str</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><span id="L-690"><a href="#L-690"><span class="linenos">690</span></a> <span class="k">def</span> <span class="nf">_ts_or_ds_to_date_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">TsOrDsToDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-691"><a href="#L-691"><span class="linenos">691</span></a> <span class="n">_dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="L-692"><a href="#L-692"><span class="linenos">692</span></a> <span class="n">time_format</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-693"><a href="#L-693"><span class="linenos">693</span></a> <span class="k">if</span> <span class="n">time_format</span> <span class="ow">and</span> <span class="n">time_format</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="n">_dialect</span><span class="o">.</span><span class="n">TIME_FORMAT</span><span class="p">,</span> <span class="n">_dialect</span><span class="o">.</span><span class="n">DATE_FORMAT</span><span class="p">):</span>
|
||||
</span><span id="L-694"><a href="#L-694"><span class="linenos">694</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</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">str_to_time_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="s2">"date"</span><span class="p">))</span>
|
||||
</span><span id="L-695"><a href="#L-695"><span class="linenos">695</span></a>
|
||||
</span><span id="L-696"><a href="#L-696"><span class="linenos">696</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</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="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">),</span> <span class="s2">"date"</span><span class="p">))</span>
|
||||
</span><span id="L-678"><a href="#L-678"><span class="linenos">678</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"sum"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"if"</span><span class="p">,</span> <span class="n">cond</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
|
||||
</span><span id="L-679"><a href="#L-679"><span class="linenos">679</span></a>
|
||||
</span><span id="L-680"><a href="#L-680"><span class="linenos">680</span></a>
|
||||
</span><span id="L-681"><a href="#L-681"><span class="linenos">681</span></a><span class="k">def</span> <span class="nf">trim_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Trim</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-682"><a href="#L-682"><span class="linenos">682</span></a> <span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span>
|
||||
</span><span id="L-683"><a href="#L-683"><span class="linenos">683</span></a> <span class="n">trim_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span>
|
||||
</span><span id="L-684"><a href="#L-684"><span class="linenos">684</span></a> <span class="n">remove_chars</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span>
|
||||
</span><span id="L-685"><a href="#L-685"><span class="linenos">685</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"collation"</span><span class="p">)</span>
|
||||
</span><span id="L-686"><a href="#L-686"><span class="linenos">686</span></a>
|
||||
</span><span id="L-687"><a href="#L-687"><span class="linenos">687</span></a> <span class="c1"># Use TRIM/LTRIM/RTRIM syntax if the expression isn't database-specific</span>
|
||||
</span><span id="L-688"><a href="#L-688"><span class="linenos">688</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">remove_chars</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">collation</span><span class="p">:</span>
|
||||
</span><span id="L-689"><a href="#L-689"><span class="linenos">689</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">trim_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-690"><a href="#L-690"><span class="linenos">690</span></a>
|
||||
</span><span id="L-691"><a href="#L-691"><span class="linenos">691</span></a> <span class="n">trim_type</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">trim_type</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">trim_type</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-692"><a href="#L-692"><span class="linenos">692</span></a> <span class="n">remove_chars</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">remove_chars</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">remove_chars</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-693"><a href="#L-693"><span class="linenos">693</span></a> <span class="n">from_part</span> <span class="o">=</span> <span class="s2">"FROM "</span> <span class="k">if</span> <span class="n">trim_type</span> <span class="ow">or</span> <span class="n">remove_chars</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-694"><a href="#L-694"><span class="linenos">694</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collation</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collation</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-695"><a href="#L-695"><span class="linenos">695</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TRIM(</span><span class="si">{</span><span class="n">trim_type</span><span class="si">}{</span><span class="n">remove_chars</span><span class="si">}{</span><span class="n">from_part</span><span class="si">}{</span><span class="n">target</span><span class="si">}{</span><span class="n">collation</span><span class="si">}</span><span class="s2">)"</span>
|
||||
</span><span id="L-696"><a href="#L-696"><span class="linenos">696</span></a>
|
||||
</span><span id="L-697"><a href="#L-697"><span class="linenos">697</span></a>
|
||||
</span><span id="L-698"><a href="#L-698"><span class="linenos">698</span></a> <span class="k">return</span> <span class="n">_ts_or_ds_to_date_sql</span>
|
||||
</span><span id="L-699"><a href="#L-699"><span class="linenos">699</span></a>
|
||||
</span><span id="L-698"><a href="#L-698"><span class="linenos">698</span></a><span class="k">def</span> <span class="nf">str_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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-699"><a href="#L-699"><span class="linenos">699</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"STRPTIME"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span>
|
||||
</span><span id="L-700"><a href="#L-700"><span class="linenos">700</span></a>
|
||||
</span><span id="L-701"><a href="#L-701"><span class="linenos">701</span></a><span class="k">def</span> <span class="nf">concat_to_dpipe_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Concat</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">SafeConcat</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-702"><a href="#L-702"><span class="linenos">702</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="L-703"><a href="#L-703"><span class="linenos">703</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">))</span>
|
||||
</span><span id="L-704"><a href="#L-704"><span class="linenos">704</span></a>
|
||||
</span><span id="L-705"><a href="#L-705"><span class="linenos">705</span></a>
|
||||
</span><span id="L-706"><a href="#L-706"><span class="linenos">706</span></a><span class="k">def</span> <span class="nf">concat_ws_to_dpipe_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">ConcatWs</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-707"><a href="#L-707"><span class="linenos">707</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="L-708"><a href="#L-708"><span class="linenos">708</span></a> <span class="n">delim</span><span class="p">,</span> <span class="o">*</span><span class="n">rest_args</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span>
|
||||
</span><span id="L-709"><a href="#L-709"><span class="linenos">709</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
|
||||
</span><span id="L-710"><a href="#L-710"><span class="linenos">710</span></a> <span class="n">reduce</span><span class="p">(</span>
|
||||
</span><span id="L-711"><a href="#L-711"><span class="linenos">711</span></a> <span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">delim</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">)),</span>
|
||||
</span><span id="L-712"><a href="#L-712"><span class="linenos">712</span></a> <span class="n">rest_args</span><span class="p">,</span>
|
||||
</span><span id="L-713"><a href="#L-713"><span class="linenos">713</span></a> <span class="p">)</span>
|
||||
</span><span id="L-714"><a href="#L-714"><span class="linenos">714</span></a> <span class="p">)</span>
|
||||
</span><span id="L-715"><a href="#L-715"><span class="linenos">715</span></a>
|
||||
</span><span id="L-701"><a href="#L-701"><span class="linenos">701</span></a>
|
||||
</span><span id="L-702"><a href="#L-702"><span class="linenos">702</span></a><span class="k">def</span> <span class="nf">ts_or_ds_to_date_sql</span><span class="p">(</span><span class="n">dialect</span><span class="p">:</span> <span class="nb">str</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><span id="L-703"><a href="#L-703"><span class="linenos">703</span></a> <span class="k">def</span> <span class="nf">_ts_or_ds_to_date_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">TsOrDsToDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-704"><a href="#L-704"><span class="linenos">704</span></a> <span class="n">_dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="L-705"><a href="#L-705"><span class="linenos">705</span></a> <span class="n">time_format</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-706"><a href="#L-706"><span class="linenos">706</span></a> <span class="k">if</span> <span class="n">time_format</span> <span class="ow">and</span> <span class="n">time_format</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="n">_dialect</span><span class="o">.</span><span class="n">TIME_FORMAT</span><span class="p">,</span> <span class="n">_dialect</span><span class="o">.</span><span class="n">DATE_FORMAT</span><span class="p">):</span>
|
||||
</span><span id="L-707"><a href="#L-707"><span class="linenos">707</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
|
||||
</span><span id="L-708"><a href="#L-708"><span class="linenos">708</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span>
|
||||
</span><span id="L-709"><a href="#L-709"><span class="linenos">709</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"format"</span><span class="p">]),</span>
|
||||
</span><span id="L-710"><a href="#L-710"><span class="linenos">710</span></a> <span class="s2">"date"</span><span class="p">,</span>
|
||||
</span><span id="L-711"><a href="#L-711"><span class="linenos">711</span></a> <span class="p">)</span>
|
||||
</span><span id="L-712"><a href="#L-712"><span class="linenos">712</span></a> <span class="p">)</span>
|
||||
</span><span id="L-713"><a href="#L-713"><span class="linenos">713</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</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">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"date"</span><span class="p">))</span>
|
||||
</span><span id="L-714"><a href="#L-714"><span class="linenos">714</span></a>
|
||||
</span><span id="L-715"><a href="#L-715"><span class="linenos">715</span></a> <span class="k">return</span> <span class="n">_ts_or_ds_to_date_sql</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 class="k">def</span> <span class="nf">regexp_extract_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">RegexpExtract</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-718"><a href="#L-718"><span class="linenos">718</span></a> <span class="n">bad_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">,</span> <span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="s2">"occurrence"</span><span class="p">,</span> <span class="s2">"parameters"</span><span class="p">)))</span>
|
||||
</span><span id="L-719"><a href="#L-719"><span class="linenos">719</span></a> <span class="k">if</span> <span class="n">bad_args</span><span class="p">:</span>
|
||||
</span><span id="L-720"><a href="#L-720"><span class="linenos">720</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"REGEXP_EXTRACT does not support the following arg(s): </span><span class="si">{</span><span class="n">bad_args</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</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">concat_to_dpipe_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Concat</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">SafeConcat</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-719"><a href="#L-719"><span class="linenos">719</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="L-720"><a href="#L-720"><span class="linenos">720</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">))</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">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
|
||||
</span><span id="L-723"><a href="#L-723"><span class="linenos">723</span></a> <span class="s2">"REGEXP_EXTRACT"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"group"</span><span class="p">)</span>
|
||||
</span><span id="L-724"><a href="#L-724"><span class="linenos">724</span></a> <span class="p">)</span>
|
||||
</span><span id="L-725"><a href="#L-725"><span class="linenos">725</span></a>
|
||||
</span><span id="L-726"><a href="#L-726"><span class="linenos">726</span></a>
|
||||
</span><span id="L-727"><a href="#L-727"><span class="linenos">727</span></a><span class="k">def</span> <span class="nf">regexp_replace_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">RegexpReplace</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-728"><a href="#L-728"><span class="linenos">728</span></a> <span class="n">bad_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">,</span> <span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="s2">"occurrence"</span><span class="p">,</span> <span class="s2">"parameters"</span><span class="p">)))</span>
|
||||
</span><span id="L-729"><a href="#L-729"><span class="linenos">729</span></a> <span class="k">if</span> <span class="n">bad_args</span><span class="p">:</span>
|
||||
</span><span id="L-730"><a href="#L-730"><span class="linenos">730</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"REGEXP_REPLACE does not support the following arg(s): </span><span class="si">{</span><span class="n">bad_args</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="L-731"><a href="#L-731"><span class="linenos">731</span></a>
|
||||
</span><span id="L-732"><a href="#L-732"><span class="linenos">732</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
|
||||
</span><span id="L-733"><a href="#L-733"><span class="linenos">733</span></a> <span class="s2">"REGEXP_REPLACE"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"replacement"</span><span class="p">]</span>
|
||||
</span><span id="L-734"><a href="#L-734"><span class="linenos">734</span></a> <span class="p">)</span>
|
||||
</span><span id="L-735"><a href="#L-735"><span class="linenos">735</span></a>
|
||||
</span><span id="L-736"><a href="#L-736"><span class="linenos">736</span></a>
|
||||
</span><span id="L-737"><a href="#L-737"><span class="linenos">737</span></a><span class="k">def</span> <span class="nf">pivot_column_names</span><span class="p">(</span><span class="n">aggregations</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">dialect</span><span class="p">:</span> <span class="n">DialectType</span><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="nb">str</span><span class="p">]:</span>
|
||||
</span><span id="L-738"><a href="#L-738"><span class="linenos">738</span></a> <span class="n">names</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="L-739"><a href="#L-739"><span class="linenos">739</span></a> <span class="k">for</span> <span class="n">agg</span> <span class="ow">in</span> <span class="n">aggregations</span><span class="p">:</span>
|
||||
</span><span id="L-740"><a href="#L-740"><span class="linenos">740</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">agg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">):</span>
|
||||
</span><span id="L-741"><a href="#L-741"><span class="linenos">741</span></a> <span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">agg</span><span class="o">.</span><span class="n">alias</span><span class="p">)</span>
|
||||
</span><span id="L-742"><a href="#L-742"><span class="linenos">742</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-743"><a href="#L-743"><span class="linenos">743</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-744"><a href="#L-744"><span class="linenos">744</span></a><span class="sd"> This case corresponds to aggregations without aliases being used as suffixes</span>
|
||||
</span><span id="L-745"><a href="#L-745"><span class="linenos">745</span></a><span class="sd"> (e.g. col_avg(foo)). We need to unquote identifiers because they're going to</span>
|
||||
</span><span id="L-746"><a href="#L-746"><span class="linenos">746</span></a><span class="sd"> be quoted in the base parser's `_parse_pivot` method, due to `to_identifier`.</span>
|
||||
</span><span id="L-747"><a href="#L-747"><span class="linenos">747</span></a><span class="sd"> Otherwise, we'd end up with `col_avg(`foo`)` (notice the double quotes).</span>
|
||||
</span><span id="L-748"><a href="#L-748"><span class="linenos">748</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-749"><a href="#L-749"><span class="linenos">749</span></a> <span class="n">agg_all_unquoted</span> <span class="o">=</span> <span class="n">agg</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span>
|
||||
</span><span id="L-750"><a href="#L-750"><span class="linenos">750</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">False</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="nb">isinstance</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">Identifier</span><span class="p">)</span>
|
||||
</span><span id="L-752"><a href="#L-752"><span class="linenos">752</span></a> <span class="k">else</span> <span class="n">node</span>
|
||||
</span><span id="L-753"><a href="#L-753"><span class="linenos">753</span></a> <span class="p">)</span>
|
||||
</span><span id="L-754"><a href="#L-754"><span class="linenos">754</span></a> <span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">agg_all_unquoted</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">normalize_functions</span><span class="o">=</span><span class="s2">"lower"</span><span class="p">))</span>
|
||||
</span><span id="L-722"><a href="#L-722"><span class="linenos">722</span></a>
|
||||
</span><span id="L-723"><a href="#L-723"><span class="linenos">723</span></a><span class="k">def</span> <span class="nf">concat_ws_to_dpipe_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">ConcatWs</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-724"><a href="#L-724"><span class="linenos">724</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="L-725"><a href="#L-725"><span class="linenos">725</span></a> <span class="n">delim</span><span class="p">,</span> <span class="o">*</span><span class="n">rest_args</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span>
|
||||
</span><span id="L-726"><a href="#L-726"><span class="linenos">726</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
|
||||
</span><span id="L-727"><a href="#L-727"><span class="linenos">727</span></a> <span class="n">reduce</span><span class="p">(</span>
|
||||
</span><span id="L-728"><a href="#L-728"><span class="linenos">728</span></a> <span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">delim</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">)),</span>
|
||||
</span><span id="L-729"><a href="#L-729"><span class="linenos">729</span></a> <span class="n">rest_args</span><span class="p">,</span>
|
||||
</span><span id="L-730"><a href="#L-730"><span class="linenos">730</span></a> <span class="p">)</span>
|
||||
</span><span id="L-731"><a href="#L-731"><span class="linenos">731</span></a> <span class="p">)</span>
|
||||
</span><span id="L-732"><a href="#L-732"><span class="linenos">732</span></a>
|
||||
</span><span id="L-733"><a href="#L-733"><span class="linenos">733</span></a>
|
||||
</span><span id="L-734"><a href="#L-734"><span class="linenos">734</span></a><span class="k">def</span> <span class="nf">regexp_extract_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">RegexpExtract</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-735"><a href="#L-735"><span class="linenos">735</span></a> <span class="n">bad_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">,</span> <span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="s2">"occurrence"</span><span class="p">,</span> <span class="s2">"parameters"</span><span class="p">)))</span>
|
||||
</span><span id="L-736"><a href="#L-736"><span class="linenos">736</span></a> <span class="k">if</span> <span class="n">bad_args</span><span class="p">:</span>
|
||||
</span><span id="L-737"><a href="#L-737"><span class="linenos">737</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"REGEXP_EXTRACT does not support the following arg(s): </span><span class="si">{</span><span class="n">bad_args</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</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">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
|
||||
</span><span id="L-740"><a href="#L-740"><span class="linenos">740</span></a> <span class="s2">"REGEXP_EXTRACT"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"group"</span><span class="p">)</span>
|
||||
</span><span id="L-741"><a href="#L-741"><span class="linenos">741</span></a> <span class="p">)</span>
|
||||
</span><span id="L-742"><a href="#L-742"><span class="linenos">742</span></a>
|
||||
</span><span id="L-743"><a href="#L-743"><span class="linenos">743</span></a>
|
||||
</span><span id="L-744"><a href="#L-744"><span class="linenos">744</span></a><span class="k">def</span> <span class="nf">regexp_replace_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">RegexpReplace</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-745"><a href="#L-745"><span class="linenos">745</span></a> <span class="n">bad_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span>
|
||||
</span><span id="L-746"><a href="#L-746"><span class="linenos">746</span></a> <span class="nb">filter</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">,</span> <span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="s2">"occurrence"</span><span class="p">,</span> <span class="s2">"parameters"</span><span class="p">,</span> <span class="s2">"modifiers"</span><span class="p">))</span>
|
||||
</span><span id="L-747"><a href="#L-747"><span class="linenos">747</span></a> <span class="p">)</span>
|
||||
</span><span id="L-748"><a href="#L-748"><span class="linenos">748</span></a> <span class="k">if</span> <span class="n">bad_args</span><span class="p">:</span>
|
||||
</span><span id="L-749"><a href="#L-749"><span class="linenos">749</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"REGEXP_REPLACE does not support the following arg(s): </span><span class="si">{</span><span class="n">bad_args</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="L-750"><a href="#L-750"><span class="linenos">750</span></a>
|
||||
</span><span id="L-751"><a href="#L-751"><span class="linenos">751</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
|
||||
</span><span id="L-752"><a href="#L-752"><span class="linenos">752</span></a> <span class="s2">"REGEXP_REPLACE"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"replacement"</span><span class="p">]</span>
|
||||
</span><span id="L-753"><a href="#L-753"><span class="linenos">753</span></a> <span class="p">)</span>
|
||||
</span><span id="L-754"><a href="#L-754"><span class="linenos">754</span></a>
|
||||
</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 class="k">return</span> <span class="n">names</span>
|
||||
</span><span id="L-757"><a href="#L-757"><span class="linenos">757</span></a>
|
||||
</span><span id="L-758"><a href="#L-758"><span class="linenos">758</span></a>
|
||||
</span><span id="L-759"><a href="#L-759"><span class="linenos">759</span></a><span class="k">def</span> <span class="nf">simplify_literal</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-760"><a href="#L-760"><span class="linenos">760</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</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">Literal</span><span class="p">):</span>
|
||||
</span><span id="L-761"><a href="#L-761"><span class="linenos">761</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.simplify</span> <span class="kn">import</span> <span class="n">simplify</span>
|
||||
</span><span id="L-762"><a href="#L-762"><span class="linenos">762</span></a>
|
||||
</span><span id="L-763"><a href="#L-763"><span class="linenos">763</span></a> <span class="n">simplify</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-764"><a href="#L-764"><span class="linenos">764</span></a>
|
||||
</span><span id="L-765"><a href="#L-765"><span class="linenos">765</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-766"><a href="#L-766"><span class="linenos">766</span></a>
|
||||
</span><span id="L-767"><a href="#L-767"><span class="linenos">767</span></a>
|
||||
</span><span id="L-768"><a href="#L-768"><span class="linenos">768</span></a><span class="k">def</span> <span class="nf">binary_from_function</span><span class="p">(</span><span class="n">expr_type</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">B</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">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">B</span><span class="p">]:</span>
|
||||
</span><span id="L-769"><a href="#L-769"><span class="linenos">769</span></a> <span class="k">return</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">expr_type</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
|
||||
</span><span id="L-770"><a href="#L-770"><span class="linenos">770</span></a>
|
||||
</span><span id="L-771"><a href="#L-771"><span class="linenos">771</span></a>
|
||||
</span><span id="L-772"><a href="#L-772"><span class="linenos">772</span></a><span class="c1"># Used to represent DATE_TRUNC in Doris, Postgres and Starrocks dialects</span>
|
||||
</span><span id="L-773"><a href="#L-773"><span class="linenos">773</span></a><span class="k">def</span> <span class="nf">parse_timestamp_trunc</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span>
|
||||
</span><span id="L-774"><a href="#L-774"><span class="linenos">774</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">unit</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
|
||||
</span><span id="L-775"><a href="#L-775"><span class="linenos">775</span></a>
|
||||
</span><span id="L-756"><a href="#L-756"><span class="linenos">756</span></a><span class="k">def</span> <span class="nf">pivot_column_names</span><span class="p">(</span><span class="n">aggregations</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">dialect</span><span class="p">:</span> <span class="n">DialectType</span><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="nb">str</span><span class="p">]:</span>
|
||||
</span><span id="L-757"><a href="#L-757"><span class="linenos">757</span></a> <span class="n">names</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="L-758"><a href="#L-758"><span class="linenos">758</span></a> <span class="k">for</span> <span class="n">agg</span> <span class="ow">in</span> <span class="n">aggregations</span><span class="p">:</span>
|
||||
</span><span id="L-759"><a href="#L-759"><span class="linenos">759</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">agg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">):</span>
|
||||
</span><span id="L-760"><a href="#L-760"><span class="linenos">760</span></a> <span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">agg</span><span class="o">.</span><span class="n">alias</span><span class="p">)</span>
|
||||
</span><span id="L-761"><a href="#L-761"><span class="linenos">761</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-762"><a href="#L-762"><span class="linenos">762</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-763"><a href="#L-763"><span class="linenos">763</span></a><span class="sd"> This case corresponds to aggregations without aliases being used as suffixes</span>
|
||||
</span><span id="L-764"><a href="#L-764"><span class="linenos">764</span></a><span class="sd"> (e.g. col_avg(foo)). We need to unquote identifiers because they're going to</span>
|
||||
</span><span id="L-765"><a href="#L-765"><span class="linenos">765</span></a><span class="sd"> be quoted in the base parser's `_parse_pivot` method, due to `to_identifier`.</span>
|
||||
</span><span id="L-766"><a href="#L-766"><span class="linenos">766</span></a><span class="sd"> Otherwise, we'd end up with `col_avg(`foo`)` (notice the double quotes).</span>
|
||||
</span><span id="L-767"><a href="#L-767"><span class="linenos">767</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-768"><a href="#L-768"><span class="linenos">768</span></a> <span class="n">agg_all_unquoted</span> <span class="o">=</span> <span class="n">agg</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span>
|
||||
</span><span id="L-769"><a href="#L-769"><span class="linenos">769</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
</span><span id="L-770"><a href="#L-770"><span class="linenos">770</span></a> <span class="k">if</span> <span class="nb">isinstance</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">Identifier</span><span class="p">)</span>
|
||||
</span><span id="L-771"><a href="#L-771"><span class="linenos">771</span></a> <span class="k">else</span> <span class="n">node</span>
|
||||
</span><span id="L-772"><a href="#L-772"><span class="linenos">772</span></a> <span class="p">)</span>
|
||||
</span><span id="L-773"><a href="#L-773"><span class="linenos">773</span></a> <span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">agg_all_unquoted</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">normalize_functions</span><span class="o">=</span><span class="s2">"lower"</span><span class="p">))</span>
|
||||
</span><span id="L-774"><a href="#L-774"><span class="linenos">774</span></a>
|
||||
</span><span id="L-775"><a href="#L-775"><span class="linenos">775</span></a> <span class="k">return</span> <span class="n">names</span>
|
||||
</span><span id="L-776"><a href="#L-776"><span class="linenos">776</span></a>
|
||||
</span><span id="L-777"><a href="#L-777"><span class="linenos">777</span></a><span class="k">def</span> <span class="nf">any_value_to_max_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">AnyValue</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-778"><a href="#L-778"><span class="linenos">778</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span>
|
||||
</span><span id="L-779"><a href="#L-779"><span class="linenos">779</span></a>
|
||||
</span><span id="L-777"><a href="#L-777"><span class="linenos">777</span></a>
|
||||
</span><span id="L-778"><a href="#L-778"><span class="linenos">778</span></a><span class="k">def</span> <span class="nf">binary_from_function</span><span class="p">(</span><span class="n">expr_type</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">B</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">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">B</span><span class="p">]:</span>
|
||||
</span><span id="L-779"><a href="#L-779"><span class="linenos">779</span></a> <span class="k">return</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">expr_type</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
|
||||
</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">bool_xor_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Xor</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-782"><a href="#L-782"><span class="linenos">782</span></a> <span class="n">a</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">)</span>
|
||||
</span><span id="L-783"><a href="#L-783"><span class="linenos">783</span></a> <span class="n">b</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">)</span>
|
||||
</span><span id="L-784"><a href="#L-784"><span class="linenos">784</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">a</span><span class="si">}</span><span class="s2"> AND (NOT </span><span class="si">{</span><span class="n">b</span><span class="si">}</span><span class="s2">)) OR ((NOT </span><span class="si">{</span><span class="n">a</span><span class="si">}</span><span class="s2">) AND </span><span class="si">{</span><span class="n">b</span><span class="si">}</span><span class="s2">)"</span>
|
||||
</span><span id="L-781"><a href="#L-781"><span class="linenos">781</span></a>
|
||||
</span><span id="L-782"><a href="#L-782"><span class="linenos">782</span></a><span class="c1"># Used to represent DATE_TRUNC in Doris, Postgres and Starrocks dialects</span>
|
||||
</span><span id="L-783"><a href="#L-783"><span class="linenos">783</span></a><span class="k">def</span> <span class="nf">parse_timestamp_trunc</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span>
|
||||
</span><span id="L-784"><a href="#L-784"><span class="linenos">784</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">unit</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
|
||||
</span><span id="L-785"><a href="#L-785"><span class="linenos">785</span></a>
|
||||
</span><span id="L-786"><a href="#L-786"><span class="linenos">786</span></a>
|
||||
</span><span id="L-787"><a href="#L-787"><span class="linenos">787</span></a><span class="c1"># Used to generate JSON_OBJECT with a comma in BigQuery and MySQL instead of colon</span>
|
||||
</span><span id="L-788"><a href="#L-788"><span class="linenos">788</span></a><span class="k">def</span> <span class="nf">json_keyvalue_comma_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">JSONKeyValue</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-789"><a href="#L-789"><span class="linenos">789</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="L-787"><a href="#L-787"><span class="linenos">787</span></a><span class="k">def</span> <span class="nf">any_value_to_max_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">AnyValue</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-788"><a href="#L-788"><span class="linenos">788</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span>
|
||||
</span><span id="L-789"><a href="#L-789"><span class="linenos">789</span></a>
|
||||
</span><span id="L-790"><a href="#L-790"><span class="linenos">790</span></a>
|
||||
</span><span id="L-791"><a href="#L-791"><span class="linenos">791</span></a>
|
||||
</span><span id="L-792"><a href="#L-792"><span class="linenos">792</span></a><span class="k">def</span> <span class="nf">is_parse_json</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">bool</span><span class="p">:</span>
|
||||
</span><span id="L-793"><a href="#L-793"><span class="linenos">793</span></a> <span class="k">return</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">ParseJSON</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span>
|
||||
</span><span id="L-794"><a href="#L-794"><span class="linenos">794</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">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"json"</span><span class="p">)</span>
|
||||
</span><span id="L-795"><a href="#L-795"><span class="linenos">795</span></a> <span class="p">)</span>
|
||||
</span><span id="L-791"><a href="#L-791"><span class="linenos">791</span></a><span class="k">def</span> <span class="nf">bool_xor_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Xor</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-792"><a href="#L-792"><span class="linenos">792</span></a> <span class="n">a</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">)</span>
|
||||
</span><span id="L-793"><a href="#L-793"><span class="linenos">793</span></a> <span class="n">b</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">)</span>
|
||||
</span><span id="L-794"><a href="#L-794"><span class="linenos">794</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">a</span><span class="si">}</span><span class="s2"> AND (NOT </span><span class="si">{</span><span class="n">b</span><span class="si">}</span><span class="s2">)) OR ((NOT </span><span class="si">{</span><span class="n">a</span><span class="si">}</span><span class="s2">) AND </span><span class="si">{</span><span class="n">b</span><span class="si">}</span><span class="s2">)"</span>
|
||||
</span><span id="L-795"><a href="#L-795"><span class="linenos">795</span></a>
|
||||
</span><span id="L-796"><a href="#L-796"><span class="linenos">796</span></a>
|
||||
</span><span id="L-797"><a href="#L-797"><span class="linenos">797</span></a>
|
||||
</span><span id="L-798"><a href="#L-798"><span class="linenos">798</span></a><span class="k">def</span> <span class="nf">isnull_to_is_null</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-799"><a href="#L-799"><span class="linenos">799</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">null</span><span class="p">()))</span>
|
||||
</span><span id="L-797"><a href="#L-797"><span class="linenos">797</span></a><span class="c1"># Used to generate JSON_OBJECT with a comma in BigQuery and MySQL instead of colon</span>
|
||||
</span><span id="L-798"><a href="#L-798"><span class="linenos">798</span></a><span class="k">def</span> <span class="nf">json_keyvalue_comma_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">JSONKeyValue</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-799"><a href="#L-799"><span class="linenos">799</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="L-800"><a href="#L-800"><span class="linenos">800</span></a>
|
||||
</span><span id="L-801"><a href="#L-801"><span class="linenos">801</span></a>
|
||||
</span><span id="L-802"><a href="#L-802"><span class="linenos">802</span></a><span class="k">def</span> <span class="nf">move_insert_cte_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Insert</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-803"><a href="#L-803"><span class="linenos">803</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"with"</span><span class="p">):</span>
|
||||
</span><span id="L-804"><a href="#L-804"><span class="linenos">804</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="L-805"><a href="#L-805"><span class="linenos">805</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"with"</span><span class="p">]</span><span class="o">.</span><span class="n">pop</span><span class="p">())</span>
|
||||
</span><span id="L-806"><a href="#L-806"><span class="linenos">806</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">insert_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-802"><a href="#L-802"><span class="linenos">802</span></a><span class="k">def</span> <span class="nf">is_parse_json</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">bool</span><span class="p">:</span>
|
||||
</span><span id="L-803"><a href="#L-803"><span class="linenos">803</span></a> <span class="k">return</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">ParseJSON</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span>
|
||||
</span><span id="L-804"><a href="#L-804"><span class="linenos">804</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">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"json"</span><span class="p">)</span>
|
||||
</span><span id="L-805"><a href="#L-805"><span class="linenos">805</span></a> <span class="p">)</span>
|
||||
</span><span id="L-806"><a href="#L-806"><span class="linenos">806</span></a>
|
||||
</span><span id="L-807"><a href="#L-807"><span class="linenos">807</span></a>
|
||||
</span><span id="L-808"><a href="#L-808"><span class="linenos">808</span></a><span class="k">def</span> <span class="nf">isnull_to_is_null</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-809"><a href="#L-809"><span class="linenos">809</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">null</span><span class="p">()))</span>
|
||||
</span><span id="L-810"><a href="#L-810"><span class="linenos">810</span></a>
|
||||
</span><span id="L-811"><a href="#L-811"><span class="linenos">811</span></a>
|
||||
</span><span id="L-812"><a href="#L-812"><span class="linenos">812</span></a><span class="k">def</span> <span class="nf">move_insert_cte_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Insert</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-813"><a href="#L-813"><span class="linenos">813</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"with"</span><span class="p">):</span>
|
||||
</span><span id="L-814"><a href="#L-814"><span class="linenos">814</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="L-815"><a href="#L-815"><span class="linenos">815</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"with"</span><span class="p">]</span><span class="o">.</span><span class="n">pop</span><span class="p">())</span>
|
||||
</span><span id="L-816"><a href="#L-816"><span class="linenos">816</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">insert_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-817"><a href="#L-817"><span class="linenos">817</span></a>
|
||||
</span><span id="L-818"><a href="#L-818"><span class="linenos">818</span></a>
|
||||
</span><span id="L-819"><a href="#L-819"><span class="linenos">819</span></a><span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span>
|
||||
</span><span id="L-820"><a href="#L-820"><span class="linenos">820</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">GeneratedAsIdentityColumnConstraint</span>
|
||||
</span><span id="L-821"><a href="#L-821"><span class="linenos">821</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-822"><a href="#L-822"><span class="linenos">822</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"1"</span>
|
||||
</span><span id="L-823"><a href="#L-823"><span class="linenos">823</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"increment"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"1"</span>
|
||||
</span><span id="L-824"><a href="#L-824"><span class="linenos">824</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"IDENTITY(</span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">)"</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3336,6 +3357,34 @@ columns are removed from the create statement.</p>
|
|||
|
||||
|
||||
|
||||
</section>
|
||||
<section id="no_timestamp_sql">
|
||||
<input id="no_timestamp_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||
<div class="attr function">
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">no_timestamp_sql</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span><span class="p">:</span> <span class="n"><a href="../generator.html#Generator">sqlglot.generator.Generator</a></span>,</span><span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Timestamp">sqlglot.expressions.Timestamp</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="no_timestamp_sql-view-source"><span>View Source</span></label>
|
||||
|
||||
</div>
|
||||
<a class="headerlink" href="#no_timestamp_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="no_timestamp_sql-599"><a href="#no_timestamp_sql-599"><span class="linenos">599</span></a><span class="k">def</span> <span class="nf">no_timestamp_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Timestamp</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="no_timestamp_sql-600"><a href="#no_timestamp_sql-600"><span class="linenos">600</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">:</span>
|
||||
</span><span id="no_timestamp_sql-601"><a href="#no_timestamp_sql-601"><span class="linenos">601</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</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">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">))</span>
|
||||
</span><span id="no_timestamp_sql-602"><a href="#no_timestamp_sql-602"><span class="linenos">602</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">"expression"</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="ow">in</span> <span class="n">TIMEZONES</span><span class="p">:</span>
|
||||
</span><span id="no_timestamp_sql-603"><a href="#no_timestamp_sql-603"><span class="linenos">603</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
|
||||
</span><span id="no_timestamp_sql-604"><a href="#no_timestamp_sql-604"><span class="linenos">604</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">AtTimeZone</span><span class="p">(</span>
|
||||
</span><span id="no_timestamp_sql-605"><a href="#no_timestamp_sql-605"><span class="linenos">605</span></a> <span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">to</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">),</span>
|
||||
</span><span id="no_timestamp_sql-606"><a href="#no_timestamp_sql-606"><span class="linenos">606</span></a> <span class="n">zone</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span>
|
||||
</span><span id="no_timestamp_sql-607"><a href="#no_timestamp_sql-607"><span class="linenos">607</span></a> <span class="p">)</span>
|
||||
</span><span id="no_timestamp_sql-608"><a href="#no_timestamp_sql-608"><span class="linenos">608</span></a> <span class="p">)</span>
|
||||
</span><span id="no_timestamp_sql-609"><a href="#no_timestamp_sql-609"><span class="linenos">609</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
<section id="locate_to_strposition">
|
||||
<input id="locate_to_strposition-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||
|
@ -3348,10 +3397,10 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#locate_to_strposition"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="locate_to_strposition-599"><a href="#locate_to_strposition-599"><span class="linenos">599</span></a><span class="k">def</span> <span class="nf">locate_to_strposition</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="locate_to_strposition-600"><a href="#locate_to_strposition-600"><span class="linenos">600</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">(</span>
|
||||
</span><span id="locate_to_strposition-601"><a href="#locate_to_strposition-601"><span class="linenos">601</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">substr</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">position</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
|
||||
</span><span id="locate_to_strposition-602"><a href="#locate_to_strposition-602"><span class="linenos">602</span></a> <span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="locate_to_strposition-612"><a href="#locate_to_strposition-612"><span class="linenos">612</span></a><span class="k">def</span> <span class="nf">locate_to_strposition</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="locate_to_strposition-613"><a href="#locate_to_strposition-613"><span class="linenos">613</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">(</span>
|
||||
</span><span id="locate_to_strposition-614"><a href="#locate_to_strposition-614"><span class="linenos">614</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">substr</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">position</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
|
||||
</span><span id="locate_to_strposition-615"><a href="#locate_to_strposition-615"><span class="linenos">615</span></a> <span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3369,10 +3418,10 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#strposition_to_locate_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="strposition_to_locate_sql-605"><a href="#strposition_to_locate_sql-605"><span class="linenos">605</span></a><span class="k">def</span> <span class="nf">strposition_to_locate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">StrPosition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="strposition_to_locate_sql-606"><a href="#strposition_to_locate_sql-606"><span class="linenos">606</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
|
||||
</span><span id="strposition_to_locate_sql-607"><a href="#strposition_to_locate_sql-607"><span class="linenos">607</span></a> <span class="s2">"LOCATE"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"substr"</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"position"</span><span class="p">)</span>
|
||||
</span><span id="strposition_to_locate_sql-608"><a href="#strposition_to_locate_sql-608"><span class="linenos">608</span></a> <span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="strposition_to_locate_sql-618"><a href="#strposition_to_locate_sql-618"><span class="linenos">618</span></a><span class="k">def</span> <span class="nf">strposition_to_locate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">StrPosition</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="strposition_to_locate_sql-619"><a href="#strposition_to_locate_sql-619"><span class="linenos">619</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
|
||||
</span><span id="strposition_to_locate_sql-620"><a href="#strposition_to_locate_sql-620"><span class="linenos">620</span></a> <span class="s2">"LOCATE"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"substr"</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"position"</span><span class="p">)</span>
|
||||
</span><span id="strposition_to_locate_sql-621"><a href="#strposition_to_locate_sql-621"><span class="linenos">621</span></a> <span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3390,13 +3439,13 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#left_to_substring_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="left_to_substring_sql-611"><a href="#left_to_substring_sql-611"><span class="linenos">611</span></a><span class="k">def</span> <span class="nf">left_to_substring_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Left</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="left_to_substring_sql-612"><a href="#left_to_substring_sql-612"><span class="linenos">612</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="left_to_substring_sql-613"><a href="#left_to_substring_sql-613"><span class="linenos">613</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
|
||||
</span><span id="left_to_substring_sql-614"><a href="#left_to_substring_sql-614"><span class="linenos">614</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">(</span>
|
||||
</span><span id="left_to_substring_sql-615"><a href="#left_to_substring_sql-615"><span class="linenos">615</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 class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="n">length</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="left_to_substring_sql-616"><a href="#left_to_substring_sql-616"><span class="linenos">616</span></a> <span class="p">)</span>
|
||||
</span><span id="left_to_substring_sql-617"><a href="#left_to_substring_sql-617"><span class="linenos">617</span></a> <span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="left_to_substring_sql-624"><a href="#left_to_substring_sql-624"><span class="linenos">624</span></a><span class="k">def</span> <span class="nf">left_to_substring_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Left</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="left_to_substring_sql-625"><a href="#left_to_substring_sql-625"><span class="linenos">625</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="left_to_substring_sql-626"><a href="#left_to_substring_sql-626"><span class="linenos">626</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
|
||||
</span><span id="left_to_substring_sql-627"><a href="#left_to_substring_sql-627"><span class="linenos">627</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">(</span>
|
||||
</span><span id="left_to_substring_sql-628"><a href="#left_to_substring_sql-628"><span class="linenos">628</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 class="p">,</span> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">1</span><span class="p">),</span> <span class="n">length</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="left_to_substring_sql-629"><a href="#left_to_substring_sql-629"><span class="linenos">629</span></a> <span class="p">)</span>
|
||||
</span><span id="left_to_substring_sql-630"><a href="#left_to_substring_sql-630"><span class="linenos">630</span></a> <span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3414,14 +3463,14 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#right_to_substring_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="right_to_substring_sql-620"><a href="#right_to_substring_sql-620"><span class="linenos">620</span></a><span class="k">def</span> <span class="nf">right_to_substring_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Left</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="right_to_substring_sql-621"><a href="#right_to_substring_sql-621"><span class="linenos">621</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="right_to_substring_sql-622"><a href="#right_to_substring_sql-622"><span class="linenos">622</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
|
||||
</span><span id="right_to_substring_sql-623"><a href="#right_to_substring_sql-623"><span class="linenos">623</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">(</span>
|
||||
</span><span id="right_to_substring_sql-624"><a href="#right_to_substring_sql-624"><span class="linenos">624</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 class="p">,</span>
|
||||
</span><span id="right_to_substring_sql-625"><a href="#right_to_substring_sql-625"><span class="linenos">625</span></a> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> <span class="o">-</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span> <span class="o">-</span> <span class="mi">1</span><span class="p">),</span>
|
||||
</span><span id="right_to_substring_sql-626"><a href="#right_to_substring_sql-626"><span class="linenos">626</span></a> <span class="p">)</span>
|
||||
</span><span id="right_to_substring_sql-627"><a href="#right_to_substring_sql-627"><span class="linenos">627</span></a> <span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="right_to_substring_sql-633"><a href="#right_to_substring_sql-633"><span class="linenos">633</span></a><span class="k">def</span> <span class="nf">right_to_substring_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Left</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="right_to_substring_sql-634"><a href="#right_to_substring_sql-634"><span class="linenos">634</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="right_to_substring_sql-635"><a href="#right_to_substring_sql-635"><span class="linenos">635</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
|
||||
</span><span id="right_to_substring_sql-636"><a href="#right_to_substring_sql-636"><span class="linenos">636</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">(</span>
|
||||
</span><span id="right_to_substring_sql-637"><a href="#right_to_substring_sql-637"><span class="linenos">637</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 class="p">,</span>
|
||||
</span><span id="right_to_substring_sql-638"><a href="#right_to_substring_sql-638"><span class="linenos">638</span></a> <span class="n">start</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Length</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> <span class="o">-</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span> <span class="o">-</span> <span class="mi">1</span><span class="p">),</span>
|
||||
</span><span id="right_to_substring_sql-639"><a href="#right_to_substring_sql-639"><span class="linenos">639</span></a> <span class="p">)</span>
|
||||
</span><span id="right_to_substring_sql-640"><a href="#right_to_substring_sql-640"><span class="linenos">640</span></a> <span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3439,8 +3488,8 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#timestrtotime_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="timestrtotime_sql-630"><a href="#timestrtotime_sql-630"><span class="linenos">630</span></a><span class="k">def</span> <span class="nf">timestrtotime_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">TimeStrToTime</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="timestrtotime_sql-631"><a href="#timestrtotime_sql-631"><span class="linenos">631</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</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">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"timestamp"</span><span class="p">))</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="timestrtotime_sql-643"><a href="#timestrtotime_sql-643"><span class="linenos">643</span></a><span class="k">def</span> <span class="nf">timestrtotime_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">TimeStrToTime</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="timestrtotime_sql-644"><a href="#timestrtotime_sql-644"><span class="linenos">644</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</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">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"timestamp"</span><span class="p">))</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3458,8 +3507,8 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#datestrtodate_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="datestrtodate_sql-634"><a href="#datestrtodate_sql-634"><span class="linenos">634</span></a><span class="k">def</span> <span class="nf">datestrtodate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">DateStrToDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="datestrtodate_sql-635"><a href="#datestrtodate_sql-635"><span class="linenos">635</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</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">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"date"</span><span class="p">))</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="datestrtodate_sql-647"><a href="#datestrtodate_sql-647"><span class="linenos">647</span></a><span class="k">def</span> <span class="nf">datestrtodate_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">DateStrToDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="datestrtodate_sql-648"><a href="#datestrtodate_sql-648"><span class="linenos">648</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</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">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"date"</span><span class="p">))</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3477,14 +3526,14 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#encode_decode_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="encode_decode_sql-639"><a href="#encode_decode_sql-639"><span class="linenos">639</span></a><span class="k">def</span> <span class="nf">encode_decode_sql</span><span class="p">(</span>
|
||||
</span><span id="encode_decode_sql-640"><a href="#encode_decode_sql-640"><span class="linenos">640</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">replace</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</span><span id="encode_decode_sql-641"><a href="#encode_decode_sql-641"><span class="linenos">641</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="encode_decode_sql-642"><a href="#encode_decode_sql-642"><span class="linenos">642</span></a> <span class="n">charset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"charset"</span><span class="p">)</span>
|
||||
</span><span id="encode_decode_sql-643"><a href="#encode_decode_sql-643"><span class="linenos">643</span></a> <span class="k">if</span> <span class="n">charset</span> <span class="ow">and</span> <span class="n">charset</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">!=</span> <span class="s2">"utf-8"</span><span class="p">:</span>
|
||||
</span><span id="encode_decode_sql-644"><a href="#encode_decode_sql-644"><span class="linenos">644</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected utf-8 character set, got </span><span class="si">{</span><span class="n">charset</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
</span><span id="encode_decode_sql-645"><a href="#encode_decode_sql-645"><span class="linenos">645</span></a>
|
||||
</span><span id="encode_decode_sql-646"><a href="#encode_decode_sql-646"><span class="linenos">646</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"replace"</span><span class="p">)</span> <span class="k">if</span> <span class="n">replace</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="encode_decode_sql-652"><a href="#encode_decode_sql-652"><span class="linenos">652</span></a><span class="k">def</span> <span class="nf">encode_decode_sql</span><span class="p">(</span>
|
||||
</span><span id="encode_decode_sql-653"><a href="#encode_decode_sql-653"><span class="linenos">653</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">,</span> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">replace</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</span><span id="encode_decode_sql-654"><a href="#encode_decode_sql-654"><span class="linenos">654</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="encode_decode_sql-655"><a href="#encode_decode_sql-655"><span class="linenos">655</span></a> <span class="n">charset</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"charset"</span><span class="p">)</span>
|
||||
</span><span id="encode_decode_sql-656"><a href="#encode_decode_sql-656"><span class="linenos">656</span></a> <span class="k">if</span> <span class="n">charset</span> <span class="ow">and</span> <span class="n">charset</span><span class="o">.</span><span class="n">name</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span> <span class="o">!=</span> <span class="s2">"utf-8"</span><span class="p">:</span>
|
||||
</span><span id="encode_decode_sql-657"><a href="#encode_decode_sql-657"><span class="linenos">657</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Expected utf-8 character set, got </span><span class="si">{</span><span class="n">charset</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
</span><span id="encode_decode_sql-658"><a href="#encode_decode_sql-658"><span class="linenos">658</span></a>
|
||||
</span><span id="encode_decode_sql-659"><a href="#encode_decode_sql-659"><span class="linenos">659</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"replace"</span><span class="p">)</span> <span class="k">if</span> <span class="n">replace</span> <span class="k">else</span> <span class="kc">None</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3502,9 +3551,9 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#min_or_least"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="min_or_least-649"><a href="#min_or_least-649"><span class="linenos">649</span></a><span class="k">def</span> <span class="nf">min_or_least</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Min</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="min_or_least-650"><a href="#min_or_least-650"><span class="linenos">650</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"LEAST"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">"MIN"</span>
|
||||
</span><span id="min_or_least-651"><a href="#min_or_least-651"><span class="linenos">651</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="min_or_least-662"><a href="#min_or_least-662"><span class="linenos">662</span></a><span class="k">def</span> <span class="nf">min_or_least</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Min</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="min_or_least-663"><a href="#min_or_least-663"><span class="linenos">663</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"LEAST"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">"MIN"</span>
|
||||
</span><span id="min_or_least-664"><a href="#min_or_least-664"><span class="linenos">664</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3522,9 +3571,9 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#max_or_greatest"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="max_or_greatest-654"><a href="#max_or_greatest-654"><span class="linenos">654</span></a><span class="k">def</span> <span class="nf">max_or_greatest</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Max</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="max_or_greatest-655"><a href="#max_or_greatest-655"><span class="linenos">655</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"GREATEST"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">"MAX"</span>
|
||||
</span><span id="max_or_greatest-656"><a href="#max_or_greatest-656"><span class="linenos">656</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="max_or_greatest-667"><a href="#max_or_greatest-667"><span class="linenos">667</span></a><span class="k">def</span> <span class="nf">max_or_greatest</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Max</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="max_or_greatest-668"><a href="#max_or_greatest-668"><span class="linenos">668</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">"GREATEST"</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span> <span class="k">else</span> <span class="s2">"MAX"</span>
|
||||
</span><span id="max_or_greatest-669"><a href="#max_or_greatest-669"><span class="linenos">669</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="n">name</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3542,14 +3591,14 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#count_if_to_sum"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="count_if_to_sum-659"><a href="#count_if_to_sum-659"><span class="linenos">659</span></a><span class="k">def</span> <span class="nf">count_if_to_sum</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">CountIf</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="count_if_to_sum-660"><a href="#count_if_to_sum-660"><span class="linenos">660</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span>
|
||||
</span><span id="count_if_to_sum-661"><a href="#count_if_to_sum-661"><span class="linenos">661</span></a>
|
||||
</span><span id="count_if_to_sum-662"><a href="#count_if_to_sum-662"><span class="linenos">662</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">):</span>
|
||||
</span><span id="count_if_to_sum-663"><a href="#count_if_to_sum-663"><span class="linenos">663</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
</span><span id="count_if_to_sum-664"><a href="#count_if_to_sum-664"><span class="linenos">664</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"DISTINCT is not supported when converting COUNT_IF to SUM"</span><span class="p">)</span>
|
||||
</span><span id="count_if_to_sum-665"><a href="#count_if_to_sum-665"><span class="linenos">665</span></a>
|
||||
</span><span id="count_if_to_sum-666"><a href="#count_if_to_sum-666"><span class="linenos">666</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"sum"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"if"</span><span class="p">,</span> <span class="n">cond</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="count_if_to_sum-672"><a href="#count_if_to_sum-672"><span class="linenos">672</span></a><span class="k">def</span> <span class="nf">count_if_to_sum</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">CountIf</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="count_if_to_sum-673"><a href="#count_if_to_sum-673"><span class="linenos">673</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span>
|
||||
</span><span id="count_if_to_sum-674"><a href="#count_if_to_sum-674"><span class="linenos">674</span></a>
|
||||
</span><span id="count_if_to_sum-675"><a href="#count_if_to_sum-675"><span class="linenos">675</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Distinct</span><span class="p">):</span>
|
||||
</span><span id="count_if_to_sum-676"><a href="#count_if_to_sum-676"><span class="linenos">676</span></a> <span class="n">cond</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
|
||||
</span><span id="count_if_to_sum-677"><a href="#count_if_to_sum-677"><span class="linenos">677</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="s2">"DISTINCT is not supported when converting COUNT_IF to SUM"</span><span class="p">)</span>
|
||||
</span><span id="count_if_to_sum-678"><a href="#count_if_to_sum-678"><span class="linenos">678</span></a>
|
||||
</span><span id="count_if_to_sum-679"><a href="#count_if_to_sum-679"><span class="linenos">679</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"sum"</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"if"</span><span class="p">,</span> <span class="n">cond</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3567,21 +3616,21 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#trim_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="trim_sql-669"><a href="#trim_sql-669"><span class="linenos">669</span></a><span class="k">def</span> <span class="nf">trim_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Trim</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="trim_sql-670"><a href="#trim_sql-670"><span class="linenos">670</span></a> <span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span>
|
||||
</span><span id="trim_sql-671"><a href="#trim_sql-671"><span class="linenos">671</span></a> <span class="n">trim_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span>
|
||||
</span><span id="trim_sql-672"><a href="#trim_sql-672"><span class="linenos">672</span></a> <span class="n">remove_chars</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span>
|
||||
</span><span id="trim_sql-673"><a href="#trim_sql-673"><span class="linenos">673</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"collation"</span><span class="p">)</span>
|
||||
</span><span id="trim_sql-674"><a href="#trim_sql-674"><span class="linenos">674</span></a>
|
||||
</span><span id="trim_sql-675"><a href="#trim_sql-675"><span class="linenos">675</span></a> <span class="c1"># Use TRIM/LTRIM/RTRIM syntax if the expression isn't database-specific</span>
|
||||
</span><span id="trim_sql-676"><a href="#trim_sql-676"><span class="linenos">676</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">remove_chars</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">collation</span><span class="p">:</span>
|
||||
</span><span id="trim_sql-677"><a href="#trim_sql-677"><span class="linenos">677</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">trim_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="trim_sql-678"><a href="#trim_sql-678"><span class="linenos">678</span></a>
|
||||
</span><span id="trim_sql-679"><a href="#trim_sql-679"><span class="linenos">679</span></a> <span class="n">trim_type</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">trim_type</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">trim_type</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="trim_sql-680"><a href="#trim_sql-680"><span class="linenos">680</span></a> <span class="n">remove_chars</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">remove_chars</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">remove_chars</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="trim_sql-681"><a href="#trim_sql-681"><span class="linenos">681</span></a> <span class="n">from_part</span> <span class="o">=</span> <span class="s2">"FROM "</span> <span class="k">if</span> <span class="n">trim_type</span> <span class="ow">or</span> <span class="n">remove_chars</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="trim_sql-682"><a href="#trim_sql-682"><span class="linenos">682</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collation</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collation</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="trim_sql-683"><a href="#trim_sql-683"><span class="linenos">683</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TRIM(</span><span class="si">{</span><span class="n">trim_type</span><span class="si">}{</span><span class="n">remove_chars</span><span class="si">}{</span><span class="n">from_part</span><span class="si">}{</span><span class="n">target</span><span class="si">}{</span><span class="n">collation</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="trim_sql-682"><a href="#trim_sql-682"><span class="linenos">682</span></a><span class="k">def</span> <span class="nf">trim_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Trim</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="trim_sql-683"><a href="#trim_sql-683"><span class="linenos">683</span></a> <span class="n">target</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">)</span>
|
||||
</span><span id="trim_sql-684"><a href="#trim_sql-684"><span class="linenos">684</span></a> <span class="n">trim_type</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"position"</span><span class="p">)</span>
|
||||
</span><span id="trim_sql-685"><a href="#trim_sql-685"><span class="linenos">685</span></a> <span class="n">remove_chars</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"expression"</span><span class="p">)</span>
|
||||
</span><span id="trim_sql-686"><a href="#trim_sql-686"><span class="linenos">686</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"collation"</span><span class="p">)</span>
|
||||
</span><span id="trim_sql-687"><a href="#trim_sql-687"><span class="linenos">687</span></a>
|
||||
</span><span id="trim_sql-688"><a href="#trim_sql-688"><span class="linenos">688</span></a> <span class="c1"># Use TRIM/LTRIM/RTRIM syntax if the expression isn't database-specific</span>
|
||||
</span><span id="trim_sql-689"><a href="#trim_sql-689"><span class="linenos">689</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">remove_chars</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">collation</span><span class="p">:</span>
|
||||
</span><span id="trim_sql-690"><a href="#trim_sql-690"><span class="linenos">690</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">trim_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="trim_sql-691"><a href="#trim_sql-691"><span class="linenos">691</span></a>
|
||||
</span><span id="trim_sql-692"><a href="#trim_sql-692"><span class="linenos">692</span></a> <span class="n">trim_type</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">trim_type</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">trim_type</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="trim_sql-693"><a href="#trim_sql-693"><span class="linenos">693</span></a> <span class="n">remove_chars</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">remove_chars</span><span class="si">}</span><span class="s2"> "</span> <span class="k">if</span> <span class="n">remove_chars</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="trim_sql-694"><a href="#trim_sql-694"><span class="linenos">694</span></a> <span class="n">from_part</span> <span class="o">=</span> <span class="s2">"FROM "</span> <span class="k">if</span> <span class="n">trim_type</span> <span class="ow">or</span> <span class="n">remove_chars</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="trim_sql-695"><a href="#trim_sql-695"><span class="linenos">695</span></a> <span class="n">collation</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">" COLLATE </span><span class="si">{</span><span class="n">collation</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">collation</span> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="trim_sql-696"><a href="#trim_sql-696"><span class="linenos">696</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"TRIM(</span><span class="si">{</span><span class="n">trim_type</span><span class="si">}{</span><span class="n">remove_chars</span><span class="si">}{</span><span class="n">from_part</span><span class="si">}{</span><span class="n">target</span><span class="si">}{</span><span class="n">collation</span><span class="si">}</span><span class="s2">)"</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3599,8 +3648,8 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#str_to_time_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="str_to_time_sql-686"><a href="#str_to_time_sql-686"><span class="linenos">686</span></a><span class="k">def</span> <span class="nf">str_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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="str_to_time_sql-687"><a href="#str_to_time_sql-687"><span class="linenos">687</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"STRPTIME"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="str_to_time_sql-699"><a href="#str_to_time_sql-699"><span class="linenos">699</span></a><span class="k">def</span> <span class="nf">str_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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="str_to_time_sql-700"><a href="#str_to_time_sql-700"><span class="linenos">700</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"STRPTIME"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3618,16 +3667,20 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#ts_or_ds_to_date_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="ts_or_ds_to_date_sql-690"><a href="#ts_or_ds_to_date_sql-690"><span class="linenos">690</span></a><span class="k">def</span> <span class="nf">ts_or_ds_to_date_sql</span><span class="p">(</span><span class="n">dialect</span><span class="p">:</span> <span class="nb">str</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><span id="ts_or_ds_to_date_sql-691"><a href="#ts_or_ds_to_date_sql-691"><span class="linenos">691</span></a> <span class="k">def</span> <span class="nf">_ts_or_ds_to_date_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">TsOrDsToDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="ts_or_ds_to_date_sql-692"><a href="#ts_or_ds_to_date_sql-692"><span class="linenos">692</span></a> <span class="n">_dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="ts_or_ds_to_date_sql-693"><a href="#ts_or_ds_to_date_sql-693"><span class="linenos">693</span></a> <span class="n">time_format</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="ts_or_ds_to_date_sql-694"><a href="#ts_or_ds_to_date_sql-694"><span class="linenos">694</span></a> <span class="k">if</span> <span class="n">time_format</span> <span class="ow">and</span> <span class="n">time_format</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="n">_dialect</span><span class="o">.</span><span class="n">TIME_FORMAT</span><span class="p">,</span> <span class="n">_dialect</span><span class="o">.</span><span class="n">DATE_FORMAT</span><span class="p">):</span>
|
||||
</span><span id="ts_or_ds_to_date_sql-695"><a href="#ts_or_ds_to_date_sql-695"><span class="linenos">695</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</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">str_to_time_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="s2">"date"</span><span class="p">))</span>
|
||||
</span><span id="ts_or_ds_to_date_sql-696"><a href="#ts_or_ds_to_date_sql-696"><span class="linenos">696</span></a>
|
||||
</span><span id="ts_or_ds_to_date_sql-697"><a href="#ts_or_ds_to_date_sql-697"><span class="linenos">697</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</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="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"this"</span><span class="p">),</span> <span class="s2">"date"</span><span class="p">))</span>
|
||||
</span><span id="ts_or_ds_to_date_sql-698"><a href="#ts_or_ds_to_date_sql-698"><span class="linenos">698</span></a>
|
||||
</span><span id="ts_or_ds_to_date_sql-699"><a href="#ts_or_ds_to_date_sql-699"><span class="linenos">699</span></a> <span class="k">return</span> <span class="n">_ts_or_ds_to_date_sql</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="ts_or_ds_to_date_sql-703"><a href="#ts_or_ds_to_date_sql-703"><span class="linenos">703</span></a><span class="k">def</span> <span class="nf">ts_or_ds_to_date_sql</span><span class="p">(</span><span class="n">dialect</span><span class="p">:</span> <span class="nb">str</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><span id="ts_or_ds_to_date_sql-704"><a href="#ts_or_ds_to_date_sql-704"><span class="linenos">704</span></a> <span class="k">def</span> <span class="nf">_ts_or_ds_to_date_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">TsOrDsToDate</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="ts_or_ds_to_date_sql-705"><a href="#ts_or_ds_to_date_sql-705"><span class="linenos">705</span></a> <span class="n">_dialect</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="ts_or_ds_to_date_sql-706"><a href="#ts_or_ds_to_date_sql-706"><span class="linenos">706</span></a> <span class="n">time_format</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="ts_or_ds_to_date_sql-707"><a href="#ts_or_ds_to_date_sql-707"><span class="linenos">707</span></a> <span class="k">if</span> <span class="n">time_format</span> <span class="ow">and</span> <span class="n">time_format</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="n">_dialect</span><span class="o">.</span><span class="n">TIME_FORMAT</span><span class="p">,</span> <span class="n">_dialect</span><span class="o">.</span><span class="n">DATE_FORMAT</span><span class="p">):</span>
|
||||
</span><span id="ts_or_ds_to_date_sql-708"><a href="#ts_or_ds_to_date_sql-708"><span class="linenos">708</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
|
||||
</span><span id="ts_or_ds_to_date_sql-709"><a href="#ts_or_ds_to_date_sql-709"><span class="linenos">709</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span>
|
||||
</span><span id="ts_or_ds_to_date_sql-710"><a href="#ts_or_ds_to_date_sql-710"><span class="linenos">710</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="nb">format</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"format"</span><span class="p">]),</span>
|
||||
</span><span id="ts_or_ds_to_date_sql-711"><a href="#ts_or_ds_to_date_sql-711"><span class="linenos">711</span></a> <span class="s2">"date"</span><span class="p">,</span>
|
||||
</span><span id="ts_or_ds_to_date_sql-712"><a href="#ts_or_ds_to_date_sql-712"><span class="linenos">712</span></a> <span class="p">)</span>
|
||||
</span><span id="ts_or_ds_to_date_sql-713"><a href="#ts_or_ds_to_date_sql-713"><span class="linenos">713</span></a> <span class="p">)</span>
|
||||
</span><span id="ts_or_ds_to_date_sql-714"><a href="#ts_or_ds_to_date_sql-714"><span class="linenos">714</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</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">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">"date"</span><span class="p">))</span>
|
||||
</span><span id="ts_or_ds_to_date_sql-715"><a href="#ts_or_ds_to_date_sql-715"><span class="linenos">715</span></a>
|
||||
</span><span id="ts_or_ds_to_date_sql-716"><a href="#ts_or_ds_to_date_sql-716"><span class="linenos">716</span></a> <span class="k">return</span> <span class="n">_ts_or_ds_to_date_sql</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3645,9 +3698,9 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#concat_to_dpipe_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="concat_to_dpipe_sql-702"><a href="#concat_to_dpipe_sql-702"><span class="linenos">702</span></a><span class="k">def</span> <span class="nf">concat_to_dpipe_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Concat</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">SafeConcat</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="concat_to_dpipe_sql-703"><a href="#concat_to_dpipe_sql-703"><span class="linenos">703</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="concat_to_dpipe_sql-704"><a href="#concat_to_dpipe_sql-704"><span class="linenos">704</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">))</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="concat_to_dpipe_sql-719"><a href="#concat_to_dpipe_sql-719"><span class="linenos">719</span></a><span class="k">def</span> <span class="nf">concat_to_dpipe_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Concat</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">SafeConcat</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="concat_to_dpipe_sql-720"><a href="#concat_to_dpipe_sql-720"><span class="linenos">720</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="concat_to_dpipe_sql-721"><a href="#concat_to_dpipe_sql-721"><span class="linenos">721</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">reduce</span><span class="p">(</span><span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">),</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">))</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3665,15 +3718,15 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#concat_ws_to_dpipe_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="concat_ws_to_dpipe_sql-707"><a href="#concat_ws_to_dpipe_sql-707"><span class="linenos">707</span></a><span class="k">def</span> <span class="nf">concat_ws_to_dpipe_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">ConcatWs</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="concat_ws_to_dpipe_sql-708"><a href="#concat_ws_to_dpipe_sql-708"><span class="linenos">708</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="concat_ws_to_dpipe_sql-709"><a href="#concat_ws_to_dpipe_sql-709"><span class="linenos">709</span></a> <span class="n">delim</span><span class="p">,</span> <span class="o">*</span><span class="n">rest_args</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span>
|
||||
</span><span id="concat_ws_to_dpipe_sql-710"><a href="#concat_ws_to_dpipe_sql-710"><span class="linenos">710</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
|
||||
</span><span id="concat_ws_to_dpipe_sql-711"><a href="#concat_ws_to_dpipe_sql-711"><span class="linenos">711</span></a> <span class="n">reduce</span><span class="p">(</span>
|
||||
</span><span id="concat_ws_to_dpipe_sql-712"><a href="#concat_ws_to_dpipe_sql-712"><span class="linenos">712</span></a> <span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">delim</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">)),</span>
|
||||
</span><span id="concat_ws_to_dpipe_sql-713"><a href="#concat_ws_to_dpipe_sql-713"><span class="linenos">713</span></a> <span class="n">rest_args</span><span class="p">,</span>
|
||||
</span><span id="concat_ws_to_dpipe_sql-714"><a href="#concat_ws_to_dpipe_sql-714"><span class="linenos">714</span></a> <span class="p">)</span>
|
||||
</span><span id="concat_ws_to_dpipe_sql-715"><a href="#concat_ws_to_dpipe_sql-715"><span class="linenos">715</span></a> <span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="concat_ws_to_dpipe_sql-724"><a href="#concat_ws_to_dpipe_sql-724"><span class="linenos">724</span></a><span class="k">def</span> <span class="nf">concat_ws_to_dpipe_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">ConcatWs</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="concat_ws_to_dpipe_sql-725"><a href="#concat_ws_to_dpipe_sql-725"><span class="linenos">725</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="concat_ws_to_dpipe_sql-726"><a href="#concat_ws_to_dpipe_sql-726"><span class="linenos">726</span></a> <span class="n">delim</span><span class="p">,</span> <span class="o">*</span><span class="n">rest_args</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span>
|
||||
</span><span id="concat_ws_to_dpipe_sql-727"><a href="#concat_ws_to_dpipe_sql-727"><span class="linenos">727</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span>
|
||||
</span><span id="concat_ws_to_dpipe_sql-728"><a href="#concat_ws_to_dpipe_sql-728"><span class="linenos">728</span></a> <span class="n">reduce</span><span class="p">(</span>
|
||||
</span><span id="concat_ws_to_dpipe_sql-729"><a href="#concat_ws_to_dpipe_sql-729"><span class="linenos">729</span></a> <span class="k">lambda</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">x</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DPipe</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">delim</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">y</span><span class="p">)),</span>
|
||||
</span><span id="concat_ws_to_dpipe_sql-730"><a href="#concat_ws_to_dpipe_sql-730"><span class="linenos">730</span></a> <span class="n">rest_args</span><span class="p">,</span>
|
||||
</span><span id="concat_ws_to_dpipe_sql-731"><a href="#concat_ws_to_dpipe_sql-731"><span class="linenos">731</span></a> <span class="p">)</span>
|
||||
</span><span id="concat_ws_to_dpipe_sql-732"><a href="#concat_ws_to_dpipe_sql-732"><span class="linenos">732</span></a> <span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3691,14 +3744,14 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#regexp_extract_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="regexp_extract_sql-718"><a href="#regexp_extract_sql-718"><span class="linenos">718</span></a><span class="k">def</span> <span class="nf">regexp_extract_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">RegexpExtract</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="regexp_extract_sql-719"><a href="#regexp_extract_sql-719"><span class="linenos">719</span></a> <span class="n">bad_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">,</span> <span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="s2">"occurrence"</span><span class="p">,</span> <span class="s2">"parameters"</span><span class="p">)))</span>
|
||||
</span><span id="regexp_extract_sql-720"><a href="#regexp_extract_sql-720"><span class="linenos">720</span></a> <span class="k">if</span> <span class="n">bad_args</span><span class="p">:</span>
|
||||
</span><span id="regexp_extract_sql-721"><a href="#regexp_extract_sql-721"><span class="linenos">721</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"REGEXP_EXTRACT does not support the following arg(s): </span><span class="si">{</span><span class="n">bad_args</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="regexp_extract_sql-722"><a href="#regexp_extract_sql-722"><span class="linenos">722</span></a>
|
||||
</span><span id="regexp_extract_sql-723"><a href="#regexp_extract_sql-723"><span class="linenos">723</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
|
||||
</span><span id="regexp_extract_sql-724"><a href="#regexp_extract_sql-724"><span class="linenos">724</span></a> <span class="s2">"REGEXP_EXTRACT"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"group"</span><span class="p">)</span>
|
||||
</span><span id="regexp_extract_sql-725"><a href="#regexp_extract_sql-725"><span class="linenos">725</span></a> <span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="regexp_extract_sql-735"><a href="#regexp_extract_sql-735"><span class="linenos">735</span></a><span class="k">def</span> <span class="nf">regexp_extract_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">RegexpExtract</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="regexp_extract_sql-736"><a href="#regexp_extract_sql-736"><span class="linenos">736</span></a> <span class="n">bad_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">,</span> <span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="s2">"occurrence"</span><span class="p">,</span> <span class="s2">"parameters"</span><span class="p">)))</span>
|
||||
</span><span id="regexp_extract_sql-737"><a href="#regexp_extract_sql-737"><span class="linenos">737</span></a> <span class="k">if</span> <span class="n">bad_args</span><span class="p">:</span>
|
||||
</span><span id="regexp_extract_sql-738"><a href="#regexp_extract_sql-738"><span class="linenos">738</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"REGEXP_EXTRACT does not support the following arg(s): </span><span class="si">{</span><span class="n">bad_args</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="regexp_extract_sql-739"><a href="#regexp_extract_sql-739"><span class="linenos">739</span></a>
|
||||
</span><span id="regexp_extract_sql-740"><a href="#regexp_extract_sql-740"><span class="linenos">740</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
|
||||
</span><span id="regexp_extract_sql-741"><a href="#regexp_extract_sql-741"><span class="linenos">741</span></a> <span class="s2">"REGEXP_EXTRACT"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"group"</span><span class="p">)</span>
|
||||
</span><span id="regexp_extract_sql-742"><a href="#regexp_extract_sql-742"><span class="linenos">742</span></a> <span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3716,14 +3769,16 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#regexp_replace_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="regexp_replace_sql-728"><a href="#regexp_replace_sql-728"><span class="linenos">728</span></a><span class="k">def</span> <span class="nf">regexp_replace_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">RegexpReplace</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="regexp_replace_sql-729"><a href="#regexp_replace_sql-729"><span class="linenos">729</span></a> <span class="n">bad_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span><span class="nb">filter</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">,</span> <span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="s2">"occurrence"</span><span class="p">,</span> <span class="s2">"parameters"</span><span class="p">)))</span>
|
||||
</span><span id="regexp_replace_sql-730"><a href="#regexp_replace_sql-730"><span class="linenos">730</span></a> <span class="k">if</span> <span class="n">bad_args</span><span class="p">:</span>
|
||||
</span><span id="regexp_replace_sql-731"><a href="#regexp_replace_sql-731"><span class="linenos">731</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"REGEXP_REPLACE does not support the following arg(s): </span><span class="si">{</span><span class="n">bad_args</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="regexp_replace_sql-732"><a href="#regexp_replace_sql-732"><span class="linenos">732</span></a>
|
||||
</span><span id="regexp_replace_sql-733"><a href="#regexp_replace_sql-733"><span class="linenos">733</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
|
||||
</span><span id="regexp_replace_sql-734"><a href="#regexp_replace_sql-734"><span class="linenos">734</span></a> <span class="s2">"REGEXP_REPLACE"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"replacement"</span><span class="p">]</span>
|
||||
</span><span id="regexp_replace_sql-735"><a href="#regexp_replace_sql-735"><span class="linenos">735</span></a> <span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="regexp_replace_sql-745"><a href="#regexp_replace_sql-745"><span class="linenos">745</span></a><span class="k">def</span> <span class="nf">regexp_replace_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">RegexpReplace</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="regexp_replace_sql-746"><a href="#regexp_replace_sql-746"><span class="linenos">746</span></a> <span class="n">bad_args</span> <span class="o">=</span> <span class="nb">list</span><span class="p">(</span>
|
||||
</span><span id="regexp_replace_sql-747"><a href="#regexp_replace_sql-747"><span class="linenos">747</span></a> <span class="nb">filter</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">,</span> <span class="p">(</span><span class="s2">"position"</span><span class="p">,</span> <span class="s2">"occurrence"</span><span class="p">,</span> <span class="s2">"parameters"</span><span class="p">,</span> <span class="s2">"modifiers"</span><span class="p">))</span>
|
||||
</span><span id="regexp_replace_sql-748"><a href="#regexp_replace_sql-748"><span class="linenos">748</span></a> <span class="p">)</span>
|
||||
</span><span id="regexp_replace_sql-749"><a href="#regexp_replace_sql-749"><span class="linenos">749</span></a> <span class="k">if</span> <span class="n">bad_args</span><span class="p">:</span>
|
||||
</span><span id="regexp_replace_sql-750"><a href="#regexp_replace_sql-750"><span class="linenos">750</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">unsupported</span><span class="p">(</span><span class="sa">f</span><span class="s2">"REGEXP_REPLACE does not support the following arg(s): </span><span class="si">{</span><span class="n">bad_args</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||||
</span><span id="regexp_replace_sql-751"><a href="#regexp_replace_sql-751"><span class="linenos">751</span></a>
|
||||
</span><span id="regexp_replace_sql-752"><a href="#regexp_replace_sql-752"><span class="linenos">752</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
|
||||
</span><span id="regexp_replace_sql-753"><a href="#regexp_replace_sql-753"><span class="linenos">753</span></a> <span class="s2">"REGEXP_REPLACE"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"replacement"</span><span class="p">]</span>
|
||||
</span><span id="regexp_replace_sql-754"><a href="#regexp_replace_sql-754"><span class="linenos">754</span></a> <span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3741,50 +3796,26 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#pivot_column_names"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="pivot_column_names-738"><a href="#pivot_column_names-738"><span class="linenos">738</span></a><span class="k">def</span> <span class="nf">pivot_column_names</span><span class="p">(</span><span class="n">aggregations</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">dialect</span><span class="p">:</span> <span class="n">DialectType</span><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="nb">str</span><span class="p">]:</span>
|
||||
</span><span id="pivot_column_names-739"><a href="#pivot_column_names-739"><span class="linenos">739</span></a> <span class="n">names</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="pivot_column_names-740"><a href="#pivot_column_names-740"><span class="linenos">740</span></a> <span class="k">for</span> <span class="n">agg</span> <span class="ow">in</span> <span class="n">aggregations</span><span class="p">:</span>
|
||||
</span><span id="pivot_column_names-741"><a href="#pivot_column_names-741"><span class="linenos">741</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">agg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">):</span>
|
||||
</span><span id="pivot_column_names-742"><a href="#pivot_column_names-742"><span class="linenos">742</span></a> <span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">agg</span><span class="o">.</span><span class="n">alias</span><span class="p">)</span>
|
||||
</span><span id="pivot_column_names-743"><a href="#pivot_column_names-743"><span class="linenos">743</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="pivot_column_names-744"><a href="#pivot_column_names-744"><span class="linenos">744</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="pivot_column_names-745"><a href="#pivot_column_names-745"><span class="linenos">745</span></a><span class="sd"> This case corresponds to aggregations without aliases being used as suffixes</span>
|
||||
</span><span id="pivot_column_names-746"><a href="#pivot_column_names-746"><span class="linenos">746</span></a><span class="sd"> (e.g. col_avg(foo)). We need to unquote identifiers because they're going to</span>
|
||||
</span><span id="pivot_column_names-747"><a href="#pivot_column_names-747"><span class="linenos">747</span></a><span class="sd"> be quoted in the base parser's `_parse_pivot` method, due to `to_identifier`.</span>
|
||||
</span><span id="pivot_column_names-748"><a href="#pivot_column_names-748"><span class="linenos">748</span></a><span class="sd"> Otherwise, we'd end up with `col_avg(`foo`)` (notice the double quotes).</span>
|
||||
</span><span id="pivot_column_names-749"><a href="#pivot_column_names-749"><span class="linenos">749</span></a><span class="sd"> """</span>
|
||||
</span><span id="pivot_column_names-750"><a href="#pivot_column_names-750"><span class="linenos">750</span></a> <span class="n">agg_all_unquoted</span> <span class="o">=</span> <span class="n">agg</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span>
|
||||
</span><span id="pivot_column_names-751"><a href="#pivot_column_names-751"><span class="linenos">751</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
</span><span id="pivot_column_names-752"><a href="#pivot_column_names-752"><span class="linenos">752</span></a> <span class="k">if</span> <span class="nb">isinstance</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">Identifier</span><span class="p">)</span>
|
||||
</span><span id="pivot_column_names-753"><a href="#pivot_column_names-753"><span class="linenos">753</span></a> <span class="k">else</span> <span class="n">node</span>
|
||||
</span><span id="pivot_column_names-754"><a href="#pivot_column_names-754"><span class="linenos">754</span></a> <span class="p">)</span>
|
||||
</span><span id="pivot_column_names-755"><a href="#pivot_column_names-755"><span class="linenos">755</span></a> <span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">agg_all_unquoted</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">normalize_functions</span><span class="o">=</span><span class="s2">"lower"</span><span class="p">))</span>
|
||||
</span><span id="pivot_column_names-756"><a href="#pivot_column_names-756"><span class="linenos">756</span></a>
|
||||
</span><span id="pivot_column_names-757"><a href="#pivot_column_names-757"><span class="linenos">757</span></a> <span class="k">return</span> <span class="n">names</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
<section id="simplify_literal">
|
||||
<input id="simplify_literal-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||
<div class="attr function">
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">simplify_literal</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">expression</span><span class="p">:</span> <span class="o">~</span><span class="n">E</span></span><span class="return-annotation">) -> <span class="o">~</span><span class="n">E</span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="simplify_literal-view-source"><span>View Source</span></label>
|
||||
|
||||
</div>
|
||||
<a class="headerlink" href="#simplify_literal"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="simplify_literal-760"><a href="#simplify_literal-760"><span class="linenos">760</span></a><span class="k">def</span> <span class="nf">simplify_literal</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="simplify_literal-761"><a href="#simplify_literal-761"><span class="linenos">761</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</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">Literal</span><span class="p">):</span>
|
||||
</span><span id="simplify_literal-762"><a href="#simplify_literal-762"><span class="linenos">762</span></a> <span class="kn">from</span> <span class="nn">sqlglot.optimizer.simplify</span> <span class="kn">import</span> <span class="n">simplify</span>
|
||||
</span><span id="simplify_literal-763"><a href="#simplify_literal-763"><span class="linenos">763</span></a>
|
||||
</span><span id="simplify_literal-764"><a href="#simplify_literal-764"><span class="linenos">764</span></a> <span class="n">simplify</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="simplify_literal-765"><a href="#simplify_literal-765"><span class="linenos">765</span></a>
|
||||
</span><span id="simplify_literal-766"><a href="#simplify_literal-766"><span class="linenos">766</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="pivot_column_names-757"><a href="#pivot_column_names-757"><span class="linenos">757</span></a><span class="k">def</span> <span class="nf">pivot_column_names</span><span class="p">(</span><span class="n">aggregations</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">dialect</span><span class="p">:</span> <span class="n">DialectType</span><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="nb">str</span><span class="p">]:</span>
|
||||
</span><span id="pivot_column_names-758"><a href="#pivot_column_names-758"><span class="linenos">758</span></a> <span class="n">names</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="pivot_column_names-759"><a href="#pivot_column_names-759"><span class="linenos">759</span></a> <span class="k">for</span> <span class="n">agg</span> <span class="ow">in</span> <span class="n">aggregations</span><span class="p">:</span>
|
||||
</span><span id="pivot_column_names-760"><a href="#pivot_column_names-760"><span class="linenos">760</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">agg</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Alias</span><span class="p">):</span>
|
||||
</span><span id="pivot_column_names-761"><a href="#pivot_column_names-761"><span class="linenos">761</span></a> <span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">agg</span><span class="o">.</span><span class="n">alias</span><span class="p">)</span>
|
||||
</span><span id="pivot_column_names-762"><a href="#pivot_column_names-762"><span class="linenos">762</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="pivot_column_names-763"><a href="#pivot_column_names-763"><span class="linenos">763</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="pivot_column_names-764"><a href="#pivot_column_names-764"><span class="linenos">764</span></a><span class="sd"> This case corresponds to aggregations without aliases being used as suffixes</span>
|
||||
</span><span id="pivot_column_names-765"><a href="#pivot_column_names-765"><span class="linenos">765</span></a><span class="sd"> (e.g. col_avg(foo)). We need to unquote identifiers because they're going to</span>
|
||||
</span><span id="pivot_column_names-766"><a href="#pivot_column_names-766"><span class="linenos">766</span></a><span class="sd"> be quoted in the base parser's `_parse_pivot` method, due to `to_identifier`.</span>
|
||||
</span><span id="pivot_column_names-767"><a href="#pivot_column_names-767"><span class="linenos">767</span></a><span class="sd"> Otherwise, we'd end up with `col_avg(`foo`)` (notice the double quotes).</span>
|
||||
</span><span id="pivot_column_names-768"><a href="#pivot_column_names-768"><span class="linenos">768</span></a><span class="sd"> """</span>
|
||||
</span><span id="pivot_column_names-769"><a href="#pivot_column_names-769"><span class="linenos">769</span></a> <span class="n">agg_all_unquoted</span> <span class="o">=</span> <span class="n">agg</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span>
|
||||
</span><span id="pivot_column_names-770"><a href="#pivot_column_names-770"><span class="linenos">770</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">quoted</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
</span><span id="pivot_column_names-771"><a href="#pivot_column_names-771"><span class="linenos">771</span></a> <span class="k">if</span> <span class="nb">isinstance</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">Identifier</span><span class="p">)</span>
|
||||
</span><span id="pivot_column_names-772"><a href="#pivot_column_names-772"><span class="linenos">772</span></a> <span class="k">else</span> <span class="n">node</span>
|
||||
</span><span id="pivot_column_names-773"><a href="#pivot_column_names-773"><span class="linenos">773</span></a> <span class="p">)</span>
|
||||
</span><span id="pivot_column_names-774"><a href="#pivot_column_names-774"><span class="linenos">774</span></a> <span class="n">names</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">agg_all_unquoted</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">normalize_functions</span><span class="o">=</span><span class="s2">"lower"</span><span class="p">))</span>
|
||||
</span><span id="pivot_column_names-775"><a href="#pivot_column_names-775"><span class="linenos">775</span></a>
|
||||
</span><span id="pivot_column_names-776"><a href="#pivot_column_names-776"><span class="linenos">776</span></a> <span class="k">return</span> <span class="n">names</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3802,8 +3833,8 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#binary_from_function"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="binary_from_function-769"><a href="#binary_from_function-769"><span class="linenos">769</span></a><span class="k">def</span> <span class="nf">binary_from_function</span><span class="p">(</span><span class="n">expr_type</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">B</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">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">B</span><span class="p">]:</span>
|
||||
</span><span id="binary_from_function-770"><a href="#binary_from_function-770"><span class="linenos">770</span></a> <span class="k">return</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">expr_type</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="binary_from_function-779"><a href="#binary_from_function-779"><span class="linenos">779</span></a><span class="k">def</span> <span class="nf">binary_from_function</span><span class="p">(</span><span class="n">expr_type</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Type</span><span class="p">[</span><span class="n">B</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">t</span><span class="o">.</span><span class="n">List</span><span class="p">],</span> <span class="n">B</span><span class="p">]:</span>
|
||||
</span><span id="binary_from_function-780"><a href="#binary_from_function-780"><span class="linenos">780</span></a> <span class="k">return</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">expr_type</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">))</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3821,8 +3852,8 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#parse_timestamp_trunc"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="parse_timestamp_trunc-774"><a href="#parse_timestamp_trunc-774"><span class="linenos">774</span></a><span class="k">def</span> <span class="nf">parse_timestamp_trunc</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span>
|
||||
</span><span id="parse_timestamp_trunc-775"><a href="#parse_timestamp_trunc-775"><span class="linenos">775</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">unit</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="parse_timestamp_trunc-784"><a href="#parse_timestamp_trunc-784"><span class="linenos">784</span></a><span class="k">def</span> <span class="nf">parse_timestamp_trunc</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span>
|
||||
</span><span id="parse_timestamp_trunc-785"><a href="#parse_timestamp_trunc-785"><span class="linenos">785</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">unit</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">))</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3840,8 +3871,8 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#any_value_to_max_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="any_value_to_max_sql-778"><a href="#any_value_to_max_sql-778"><span class="linenos">778</span></a><span class="k">def</span> <span class="nf">any_value_to_max_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">AnyValue</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="any_value_to_max_sql-779"><a href="#any_value_to_max_sql-779"><span class="linenos">779</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="any_value_to_max_sql-788"><a href="#any_value_to_max_sql-788"><span class="linenos">788</span></a><span class="k">def</span> <span class="nf">any_value_to_max_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">AnyValue</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="any_value_to_max_sql-789"><a href="#any_value_to_max_sql-789"><span class="linenos">789</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">"MAX"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3859,10 +3890,10 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#bool_xor_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="bool_xor_sql-782"><a href="#bool_xor_sql-782"><span class="linenos">782</span></a><span class="k">def</span> <span class="nf">bool_xor_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Xor</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="bool_xor_sql-783"><a href="#bool_xor_sql-783"><span class="linenos">783</span></a> <span class="n">a</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">)</span>
|
||||
</span><span id="bool_xor_sql-784"><a href="#bool_xor_sql-784"><span class="linenos">784</span></a> <span class="n">b</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">)</span>
|
||||
</span><span id="bool_xor_sql-785"><a href="#bool_xor_sql-785"><span class="linenos">785</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">a</span><span class="si">}</span><span class="s2"> AND (NOT </span><span class="si">{</span><span class="n">b</span><span class="si">}</span><span class="s2">)) OR ((NOT </span><span class="si">{</span><span class="n">a</span><span class="si">}</span><span class="s2">) AND </span><span class="si">{</span><span class="n">b</span><span class="si">}</span><span class="s2">)"</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="bool_xor_sql-792"><a href="#bool_xor_sql-792"><span class="linenos">792</span></a><span class="k">def</span> <span class="nf">bool_xor_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Xor</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="bool_xor_sql-793"><a href="#bool_xor_sql-793"><span class="linenos">793</span></a> <span class="n">a</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">)</span>
|
||||
</span><span id="bool_xor_sql-794"><a href="#bool_xor_sql-794"><span class="linenos">794</span></a> <span class="n">b</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">)</span>
|
||||
</span><span id="bool_xor_sql-795"><a href="#bool_xor_sql-795"><span class="linenos">795</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"(</span><span class="si">{</span><span class="n">a</span><span class="si">}</span><span class="s2"> AND (NOT </span><span class="si">{</span><span class="n">b</span><span class="si">}</span><span class="s2">)) OR ((NOT </span><span class="si">{</span><span class="n">a</span><span class="si">}</span><span class="s2">) AND </span><span class="si">{</span><span class="n">b</span><span class="si">}</span><span class="s2">)"</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3880,8 +3911,8 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#json_keyvalue_comma_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="json_keyvalue_comma_sql-789"><a href="#json_keyvalue_comma_sql-789"><span class="linenos">789</span></a><span class="k">def</span> <span class="nf">json_keyvalue_comma_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">JSONKeyValue</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="json_keyvalue_comma_sql-790"><a href="#json_keyvalue_comma_sql-790"><span class="linenos">790</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="json_keyvalue_comma_sql-799"><a href="#json_keyvalue_comma_sql-799"><span class="linenos">799</span></a><span class="k">def</span> <span class="nf">json_keyvalue_comma_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">JSONKeyValue</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="json_keyvalue_comma_sql-800"><a href="#json_keyvalue_comma_sql-800"><span class="linenos">800</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'this'</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span><span class="w"> </span><span class="s1">'expression'</span><span class="p">)</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3899,10 +3930,10 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#is_parse_json"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="is_parse_json-793"><a href="#is_parse_json-793"><span class="linenos">793</span></a><span class="k">def</span> <span class="nf">is_parse_json</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">bool</span><span class="p">:</span>
|
||||
</span><span id="is_parse_json-794"><a href="#is_parse_json-794"><span class="linenos">794</span></a> <span class="k">return</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">ParseJSON</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span>
|
||||
</span><span id="is_parse_json-795"><a href="#is_parse_json-795"><span class="linenos">795</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">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"json"</span><span class="p">)</span>
|
||||
</span><span id="is_parse_json-796"><a href="#is_parse_json-796"><span class="linenos">796</span></a> <span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="is_parse_json-803"><a href="#is_parse_json-803"><span class="linenos">803</span></a><span class="k">def</span> <span class="nf">is_parse_json</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">bool</span><span class="p">:</span>
|
||||
</span><span id="is_parse_json-804"><a href="#is_parse_json-804"><span class="linenos">804</span></a> <span class="k">return</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">ParseJSON</span><span class="p">)</span> <span class="ow">or</span> <span class="p">(</span>
|
||||
</span><span id="is_parse_json-805"><a href="#is_parse_json-805"><span class="linenos">805</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">Cast</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="s2">"json"</span><span class="p">)</span>
|
||||
</span><span id="is_parse_json-806"><a href="#is_parse_json-806"><span class="linenos">806</span></a> <span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3920,8 +3951,8 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#isnull_to_is_null"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="isnull_to_is_null-799"><a href="#isnull_to_is_null-799"><span class="linenos">799</span></a><span class="k">def</span> <span class="nf">isnull_to_is_null</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="isnull_to_is_null-800"><a href="#isnull_to_is_null-800"><span class="linenos">800</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">null</span><span class="p">()))</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="isnull_to_is_null-809"><a href="#isnull_to_is_null-809"><span class="linenos">809</span></a><span class="k">def</span> <span class="nf">isnull_to_is_null</span><span class="p">(</span><span class="n">args</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="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="isnull_to_is_null-810"><a href="#isnull_to_is_null-810"><span class="linenos">810</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Is</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">null</span><span class="p">()))</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -3939,11 +3970,34 @@ columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#move_insert_cte_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="move_insert_cte_sql-803"><a href="#move_insert_cte_sql-803"><span class="linenos">803</span></a><span class="k">def</span> <span class="nf">move_insert_cte_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Insert</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="move_insert_cte_sql-804"><a href="#move_insert_cte_sql-804"><span class="linenos">804</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"with"</span><span class="p">):</span>
|
||||
</span><span id="move_insert_cte_sql-805"><a href="#move_insert_cte_sql-805"><span class="linenos">805</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="move_insert_cte_sql-806"><a href="#move_insert_cte_sql-806"><span class="linenos">806</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"with"</span><span class="p">]</span><span class="o">.</span><span class="n">pop</span><span class="p">())</span>
|
||||
</span><span id="move_insert_cte_sql-807"><a href="#move_insert_cte_sql-807"><span class="linenos">807</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">insert_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="move_insert_cte_sql-813"><a href="#move_insert_cte_sql-813"><span class="linenos">813</span></a><span class="k">def</span> <span class="nf">move_insert_cte_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">Insert</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="move_insert_cte_sql-814"><a href="#move_insert_cte_sql-814"><span class="linenos">814</span></a> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"with"</span><span class="p">):</span>
|
||||
</span><span id="move_insert_cte_sql-815"><a href="#move_insert_cte_sql-815"><span class="linenos">815</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
|
||||
</span><span id="move_insert_cte_sql-816"><a href="#move_insert_cte_sql-816"><span class="linenos">816</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"with"</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">"with"</span><span class="p">]</span><span class="o">.</span><span class="n">pop</span><span class="p">())</span>
|
||||
</span><span id="move_insert_cte_sql-817"><a href="#move_insert_cte_sql-817"><span class="linenos">817</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">insert_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
<section id="generatedasidentitycolumnconstraint_sql">
|
||||
<input id="generatedasidentitycolumnconstraint_sql-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||
<div class="attr function">
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">generatedasidentitycolumnconstraint_sql</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span><span class="p">:</span> <span class="n"><a href="../generator.html#Generator">sqlglot.generator.Generator</a></span>,</span><span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#GeneratedAsIdentityColumnConstraint">sqlglot.expressions.GeneratedAsIdentityColumnConstraint</a></span></span><span class="return-annotation">) -> <span class="nb">str</span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="generatedasidentitycolumnconstraint_sql-view-source"><span>View Source</span></label>
|
||||
|
||||
</div>
|
||||
<a class="headerlink" href="#generatedasidentitycolumnconstraint_sql"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="generatedasidentitycolumnconstraint_sql-820"><a href="#generatedasidentitycolumnconstraint_sql-820"><span class="linenos">820</span></a><span class="k">def</span> <span class="nf">generatedasidentitycolumnconstraint_sql</span><span class="p">(</span>
|
||||
</span><span id="generatedasidentitycolumnconstraint_sql-821"><a href="#generatedasidentitycolumnconstraint_sql-821"><span class="linenos">821</span></a> <span class="bp">self</span><span class="p">:</span> <span class="n">Generator</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">GeneratedAsIdentityColumnConstraint</span>
|
||||
</span><span id="generatedasidentitycolumnconstraint_sql-822"><a href="#generatedasidentitycolumnconstraint_sql-822"><span class="linenos">822</span></a><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="generatedasidentitycolumnconstraint_sql-823"><a href="#generatedasidentitycolumnconstraint_sql-823"><span class="linenos">823</span></a> <span class="n">start</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"start"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"1"</span>
|
||||
</span><span id="generatedasidentitycolumnconstraint_sql-824"><a href="#generatedasidentitycolumnconstraint_sql-824"><span class="linenos">824</span></a> <span class="n">increment</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">"increment"</span><span class="p">)</span> <span class="ow">or</span> <span class="s2">"1"</span>
|
||||
</span><span id="generatedasidentitycolumnconstraint_sql-825"><a href="#generatedasidentitycolumnconstraint_sql-825"><span class="linenos">825</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"IDENTITY(</span><span class="si">{</span><span class="n">start</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">increment</span><span class="si">}</span><span class="s2">)"</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -250,7 +250,7 @@
|
|||
</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">row</span><span class="p">[</span><span class="bp">self</span><span class="o">.</span><span class="n">columns</span><span class="p">[</span><span class="n">column</span><span class="p">]]</span>
|
||||
</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a>
|
||||
</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a>
|
||||
</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a><span class="k">class</span> <span class="nc">Tables</span><span class="p">(</span><span class="n">AbstractMappingSchema</span><span class="p">[</span><span class="n">Table</span><span class="p">]):</span>
|
||||
</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a><span class="k">class</span> <span class="nc">Tables</span><span class="p">(</span><span class="n">AbstractMappingSchema</span><span class="p">):</span>
|
||||
</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a> <span class="k">pass</span>
|
||||
</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a>
|
||||
</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a>
|
||||
|
@ -733,37 +733,18 @@
|
|||
<div class="attr class">
|
||||
|
||||
<span class="def">class</span>
|
||||
<span class="name">Tables</span><wbr>(<span class="base"><a href="../schema.html#AbstractMappingSchema">sqlglot.schema.AbstractMappingSchema[sqlglot.executor.table.Table]</a></span>):
|
||||
<span class="name">Tables</span><wbr>(<span class="base"><a href="../schema.html#AbstractMappingSchema">sqlglot.schema.AbstractMappingSchema</a></span>):
|
||||
|
||||
<label class="view-source-button" for="Tables-view-source"><span>View Source</span></label>
|
||||
|
||||
</div>
|
||||
<a class="headerlink" href="#Tables"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Tables-109"><a href="#Tables-109"><span class="linenos">109</span></a><span class="k">class</span> <span class="nc">Tables</span><span class="p">(</span><span class="n">AbstractMappingSchema</span><span class="p">[</span><span class="n">Table</span><span class="p">]):</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Tables-109"><a href="#Tables-109"><span class="linenos">109</span></a><span class="k">class</span> <span class="nc">Tables</span><span class="p">(</span><span class="n">AbstractMappingSchema</span><span class="p">):</span>
|
||||
</span><span id="Tables-110"><a href="#Tables-110"><span class="linenos">110</span></a> <span class="k">pass</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
<div class="docstring"><p>Abstract base class for generic types.</p>
|
||||
|
||||
<p>A generic type is typically declared by inheriting from
|
||||
this class parameterized with one or more type variables.
|
||||
For example, a generic mapping type might be defined as::</p>
|
||||
|
||||
<p>class Mapping(Generic[KT, VT]):
|
||||
def __getitem__(self, key: KT) -> VT:
|
||||
...
|
||||
# Etc.</p>
|
||||
|
||||
<p>This class can then be used as follows::</p>
|
||||
|
||||
<p>def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:
|
||||
try:
|
||||
return mapping[key]
|
||||
except KeyError:
|
||||
return default</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<div class="inherited">
|
||||
<h5>Inherited Members</h5>
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load diff
|
@ -235,156 +235,173 @@
|
|||
</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a>
|
||||
</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="k">return</span> <span class="n">upstream</span>
|
||||
</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a>
|
||||
</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">scope</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">Select</span><span class="p">):</span>
|
||||
</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="c1"># For better ergonomics in our node labels, replace the full select with</span>
|
||||
</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="c1"># a version that has only the column we care about.</span>
|
||||
</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="c1"># "x", SELECT x, y FROM foo</span>
|
||||
</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="c1"># => "x", SELECT x FROM foo</span>
|
||||
</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">t</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">Expression</span><span class="p">,</span> <span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span>
|
||||
</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="n">select</span><span class="o">.</span><span class="n">unalias</span><span class="p">()</span>
|
||||
</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a>
|
||||
</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">subquery</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">):</span>
|
||||
</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="n">upstream</span> <span class="o">=</span> <span class="n">upstream</span> <span class="ow">or</span> <span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s2">"SUBQUERY"</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">select</span><span class="p">)</span>
|
||||
</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="n">scope</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Scope</span><span class="p">,</span> <span class="n">build_scope</span><span class="p">(</span><span class="n">subquery</span><span class="o">.</span><span class="n">unnest</span><span class="p">()))</span>
|
||||
</span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a>
|
||||
</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a> <span class="k">for</span> <span class="n">select</span> <span class="ow">in</span> <span class="n">subquery</span><span class="o">.</span><span class="n">named_selects</span><span class="p">:</span>
|
||||
</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a> <span class="n">to_node</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">scope</span><span class="o">=</span><span class="n">scope</span><span class="p">,</span> <span class="n">upstream</span><span class="o">=</span><span class="n">upstream</span><span class="p">)</span>
|
||||
</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a>
|
||||
</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="c1"># Create the node for this step in the lineage chain, and attach it to the previous one.</span>
|
||||
</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span>
|
||||
</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="n">name</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">scope_name</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">column</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">scope_name</span> <span class="k">else</span> <span class="nb">str</span><span class="p">(</span><span class="n">column</span><span class="p">),</span>
|
||||
</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span>
|
||||
</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">select</span><span class="p">,</span>
|
||||
</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span>
|
||||
</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="p">)</span>
|
||||
</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="k">if</span> <span class="n">upstream</span><span class="p">:</span>
|
||||
</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="n">upstream</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
|
||||
</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a>
|
||||
</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a> <span class="c1"># Find all columns that went into creating this one to list their lineage nodes.</span>
|
||||
</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">select</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-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">table</span>
|
||||
</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">)</span>
|
||||
</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a>
|
||||
</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">):</span>
|
||||
</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a> <span class="c1"># The table itself came from a more specific scope. Recurse into that one using the unaliased column name.</span>
|
||||
</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="n">to_node</span><span class="p">(</span>
|
||||
</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> <span class="n">c</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">scope</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">scope_name</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">upstream</span><span class="o">=</span><span class="n">node</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">aliases</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">)</span>
|
||||
</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a> <span class="p">)</span>
|
||||
</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="c1"># The source is not a scope - we've reached the end of the line. At this point, if a source is not found</span>
|
||||
</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a> <span class="c1"># it means this column's lineage is unknown. This can happen if the definition of a source used in a query</span>
|
||||
</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a> <span class="c1"># is not passed into the `sources` map.</span>
|
||||
</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">source</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">()</span>
|
||||
</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">sql</span><span class="p">(),</span> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">source</span><span class="p">))</span>
|
||||
</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a>
|
||||
</span><span id="L-162"><a href="#L-162"><span class="linenos">162</span></a> <span class="k">return</span> <span class="n">node</span>
|
||||
</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a>
|
||||
</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a> <span class="k">return</span> <span class="n">to_node</span><span class="p">(</span><span class="n">column</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="n">column</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">scope</span><span class="p">)</span>
|
||||
</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a>
|
||||
</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="k">return</span> <span class="n">upstream</span>
|
||||
</span><span id="L-136"><a href="#L-136"><span class="linenos">136</span></a>
|
||||
</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">scope</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">Select</span><span class="p">):</span>
|
||||
</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="c1"># For better ergonomics in our node labels, replace the full select with</span>
|
||||
</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a> <span class="c1"># a version that has only the column we care about.</span>
|
||||
</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a> <span class="c1"># "x", SELECT x, y FROM foo</span>
|
||||
</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="c1"># => "x", SELECT x FROM foo</span>
|
||||
</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">t</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">Expression</span><span class="p">,</span> <span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span>
|
||||
</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="L-145"><a href="#L-145"><span class="linenos">145</span></a>
|
||||
</span><span id="L-146"><a href="#L-146"><span class="linenos">146</span></a> <span class="c1"># Create the node for this step in the lineage chain, and attach it to the previous one.</span>
|
||||
</span><span id="L-147"><a href="#L-147"><span class="linenos">147</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span>
|
||||
</span><span id="L-148"><a href="#L-148"><span class="linenos">148</span></a> <span class="n">name</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">scope_name</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">column</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">scope_name</span> <span class="k">else</span> <span class="nb">str</span><span class="p">(</span><span class="n">column</span><span class="p">),</span>
|
||||
</span><span id="L-149"><a href="#L-149"><span class="linenos">149</span></a> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span>
|
||||
</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">select</span><span class="p">,</span>
|
||||
</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span>
|
||||
</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="p">)</span>
|
||||
</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> <span class="k">if</span> <span class="n">upstream</span><span class="p">:</span>
|
||||
</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a> <span class="n">upstream</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
|
||||
</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a>
|
||||
</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="c1"># Find all columns that went into creating this one to list their lineage nodes.</span>
|
||||
</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a> <span class="n">source_columns</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">select</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-158"><a href="#L-158"><span class="linenos">158</span></a>
|
||||
</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="c1"># If the source is a UDTF find columns used in the UTDF to generate the table</span>
|
||||
</span><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UDTF</span><span class="p">):</span>
|
||||
</span><span id="L-161"><a href="#L-161"><span class="linenos">161</span></a> <span class="n">source_columns</span> <span class="o">|=</span> <span class="nb">set</span><span class="p">(</span><span class="n">source</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-162"><a href="#L-162"><span class="linenos">162</span></a>
|
||||
</span><span id="L-163"><a href="#L-163"><span class="linenos">163</span></a> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">source_columns</span><span class="p">:</span>
|
||||
</span><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">table</span>
|
||||
</span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">)</span>
|
||||
</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">class</span> <span class="nc">LineageHTML</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">"""Node to HTML generator using vis.js.</span>
|
||||
</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a>
|
||||
</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a><span class="sd"> https://visjs.github.io/vis-network/docs/network/</span>
|
||||
</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a>
|
||||
</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
||||
</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="bp">self</span><span class="p">,</span>
|
||||
</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="n">node</span><span class="p">:</span> <span class="n">Node</span><span class="p">,</span>
|
||||
</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a> <span class="n">imports</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-178"><a href="#L-178"><span class="linenos">178</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span>
|
||||
</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a> <span class="p">):</span>
|
||||
</span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">node</span> <span class="o">=</span> <span class="n">node</span>
|
||||
</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span> <span class="o">=</span> <span class="n">imports</span>
|
||||
</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">):</span>
|
||||
</span><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a> <span class="c1"># The table itself came from a more specific scope. Recurse into that one using the unaliased column name.</span>
|
||||
</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a> <span class="n">to_node</span><span class="p">(</span>
|
||||
</span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a> <span class="n">c</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">scope</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">scope_name</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">upstream</span><span class="o">=</span><span class="n">node</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">aliases</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">)</span>
|
||||
</span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> <span class="p">)</span>
|
||||
</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="c1"># The source is not a scope - we've reached the end of the line. At this point, if a source is not found</span>
|
||||
</span><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="c1"># it means this column's lineage is unknown. This can happen if the definition of a source used in a query</span>
|
||||
</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="c1"># is not passed into the `sources` map.</span>
|
||||
</span><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">source</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">()</span>
|
||||
</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">sql</span><span class="p">(),</span> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">source</span><span class="p">))</span>
|
||||
</span><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a>
|
||||
</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a> <span class="k">return</span> <span class="n">node</span>
|
||||
</span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a>
|
||||
</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a> <span class="k">return</span> <span class="n">to_node</span><span class="p">(</span><span class="n">column</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="n">column</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">scope</span><span class="p">)</span>
|
||||
</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a>
|
||||
</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a> <span class="s2">"height"</span><span class="p">:</span> <span class="s2">"500px"</span><span class="p">,</span>
|
||||
</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a> <span class="s2">"width"</span><span class="p">:</span> <span class="s2">"100%"</span><span class="p">,</span>
|
||||
</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a> <span class="s2">"layout"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a> <span class="s2">"hierarchical"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="L-189"><a href="#L-189"><span class="linenos">189</span></a> <span class="s2">"nodeSpacing"</span><span class="p">:</span> <span class="mi">200</span><span class="p">,</span>
|
||||
</span><span id="L-190"><a href="#L-190"><span class="linenos">190</span></a> <span class="s2">"sortMethod"</span><span class="p">:</span> <span class="s2">"directed"</span><span class="p">,</span>
|
||||
</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a> <span class="p">},</span>
|
||||
</span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a> <span class="p">},</span>
|
||||
</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="s2">"interaction"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a> <span class="s2">"dragNodes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a> <span class="s2">"selectable"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a> <span class="p">},</span>
|
||||
</span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a> <span class="s2">"physics"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a> <span class="p">},</span>
|
||||
</span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a> <span class="s2">"edges"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-201"><a href="#L-201"><span class="linenos">201</span></a> <span class="s2">"arrows"</span><span class="p">:</span> <span class="s2">"to"</span><span class="p">,</span>
|
||||
</span><span id="L-202"><a href="#L-202"><span class="linenos">202</span></a> <span class="p">},</span>
|
||||
</span><span id="L-203"><a href="#L-203"><span class="linenos">203</span></a> <span class="s2">"nodes"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-204"><a href="#L-204"><span class="linenos">204</span></a> <span class="s2">"font"</span><span class="p">:</span> <span class="s2">"20px monaco"</span><span class="p">,</span>
|
||||
</span><span id="L-205"><a href="#L-205"><span class="linenos">205</span></a> <span class="s2">"shape"</span><span class="p">:</span> <span class="s2">"box"</span><span class="p">,</span>
|
||||
</span><span id="L-206"><a href="#L-206"><span class="linenos">206</span></a> <span class="s2">"widthConstraint"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-207"><a href="#L-207"><span class="linenos">207</span></a> <span class="s2">"maximum"</span><span class="p">:</span> <span class="mi">300</span><span class="p">,</span>
|
||||
</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a>
|
||||
</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a><span class="k">class</span> <span class="nc">LineageHTML</span><span class="p">:</span>
|
||||
</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a><span class="w"> </span><span class="sd">"""Node to HTML generator using vis.js.</span>
|
||||
</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a>
|
||||
</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a><span class="sd"> https://visjs.github.io/vis-network/docs/network/</span>
|
||||
</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-189"><a href="#L-189"><span class="linenos">189</span></a>
|
||||
</span><span id="L-190"><a href="#L-190"><span class="linenos">190</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
||||
</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a> <span class="bp">self</span><span class="p">,</span>
|
||||
</span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a> <span class="n">node</span><span class="p">:</span> <span class="n">Node</span><span class="p">,</span>
|
||||
</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a> <span class="n">imports</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-195"><a href="#L-195"><span class="linenos">195</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span>
|
||||
</span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a> <span class="p">):</span>
|
||||
</span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">node</span> <span class="o">=</span> <span class="n">node</span>
|
||||
</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span> <span class="o">=</span> <span class="n">imports</span>
|
||||
</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a>
|
||||
</span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="L-201"><a href="#L-201"><span class="linenos">201</span></a> <span class="s2">"height"</span><span class="p">:</span> <span class="s2">"500px"</span><span class="p">,</span>
|
||||
</span><span id="L-202"><a href="#L-202"><span class="linenos">202</span></a> <span class="s2">"width"</span><span class="p">:</span> <span class="s2">"100%"</span><span class="p">,</span>
|
||||
</span><span id="L-203"><a href="#L-203"><span class="linenos">203</span></a> <span class="s2">"layout"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-204"><a href="#L-204"><span class="linenos">204</span></a> <span class="s2">"hierarchical"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-205"><a href="#L-205"><span class="linenos">205</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="L-206"><a href="#L-206"><span class="linenos">206</span></a> <span class="s2">"nodeSpacing"</span><span class="p">:</span> <span class="mi">200</span><span class="p">,</span>
|
||||
</span><span id="L-207"><a href="#L-207"><span class="linenos">207</span></a> <span class="s2">"sortMethod"</span><span class="p">:</span> <span class="s2">"directed"</span><span class="p">,</span>
|
||||
</span><span id="L-208"><a href="#L-208"><span class="linenos">208</span></a> <span class="p">},</span>
|
||||
</span><span id="L-209"><a href="#L-209"><span class="linenos">209</span></a> <span class="p">},</span>
|
||||
</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span>
|
||||
</span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a> <span class="p">}</span>
|
||||
</span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a>
|
||||
</span><span id="L-213"><a href="#L-213"><span class="linenos">213</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="L-214"><a href="#L-214"><span class="linenos">214</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">edges</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="L-215"><a href="#L-215"><span class="linenos">215</span></a>
|
||||
</span><span id="L-216"><a href="#L-216"><span class="linenos">216</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">walk</span><span class="p">():</span>
|
||||
</span><span id="L-217"><a href="#L-217"><span class="linenos">217</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</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">Table</span><span class="p">):</span>
|
||||
</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a> <span class="n">label</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"FROM </span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a> <span class="n">title</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"<pre>SELECT </span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> FROM </span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="si">}</span><span class="s2"></pre>"</span>
|
||||
</span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> <span class="n">group</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
</span><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-222"><a href="#L-222"><span class="linenos">222</span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">pretty</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="L-223"><a href="#L-223"><span class="linenos">223</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span>
|
||||
</span><span id="L-224"><a href="#L-224"><span class="linenos">224</span></a> <span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Tag</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">n</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"<b>"</span><span class="p">,</span> <span class="n">postfix</span><span class="o">=</span><span class="s2">"</b>"</span><span class="p">)</span>
|
||||
</span><span id="L-225"><a href="#L-225"><span class="linenos">225</span></a> <span class="k">if</span> <span class="n">n</span> <span class="ow">is</span> <span class="n">node</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="L-226"><a href="#L-226"><span class="linenos">226</span></a> <span class="k">else</span> <span class="n">n</span><span class="p">,</span>
|
||||
</span><span id="L-227"><a href="#L-227"><span class="linenos">227</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="L-228"><a href="#L-228"><span class="linenos">228</span></a> <span class="p">)</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">pretty</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="L-229"><a href="#L-229"><span class="linenos">229</span></a> <span class="n">title</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"<pre></span><span class="si">{</span><span class="n">source</span><span class="si">}</span><span class="s2"></pre>"</span>
|
||||
</span><span id="L-230"><a href="#L-230"><span class="linenos">230</span></a> <span class="n">group</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
</span><span id="L-231"><a href="#L-231"><span class="linenos">231</span></a>
|
||||
</span><span id="L-232"><a href="#L-232"><span class="linenos">232</span></a> <span class="n">node_id</span> <span class="o">=</span> <span class="nb">id</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
|
||||
</span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a>
|
||||
</span><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">[</span><span class="n">node_id</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="L-235"><a href="#L-235"><span class="linenos">235</span></a> <span class="s2">"id"</span><span class="p">:</span> <span class="n">node_id</span><span class="p">,</span>
|
||||
</span><span id="L-236"><a href="#L-236"><span class="linenos">236</span></a> <span class="s2">"label"</span><span class="p">:</span> <span class="n">label</span><span class="p">,</span>
|
||||
</span><span id="L-237"><a href="#L-237"><span class="linenos">237</span></a> <span class="s2">"title"</span><span class="p">:</span> <span class="n">title</span><span class="p">,</span>
|
||||
</span><span id="L-238"><a href="#L-238"><span class="linenos">238</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="n">group</span><span class="p">,</span>
|
||||
</span><span id="L-239"><a href="#L-239"><span class="linenos">239</span></a> <span class="p">}</span>
|
||||
</span><span id="L-240"><a href="#L-240"><span class="linenos">240</span></a>
|
||||
</span><span id="L-241"><a href="#L-241"><span class="linenos">241</span></a> <span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="p">:</span>
|
||||
</span><span id="L-242"><a href="#L-242"><span class="linenos">242</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">edges</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s2">"from"</span><span class="p">:</span> <span class="n">node_id</span><span class="p">,</span> <span class="s2">"to"</span><span class="p">:</span> <span class="nb">id</span><span class="p">(</span><span class="n">d</span><span class="p">)})</span>
|
||||
</span><span id="L-243"><a href="#L-243"><span class="linenos">243</span></a>
|
||||
</span><span id="L-244"><a href="#L-244"><span class="linenos">244</span></a> <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-245"><a href="#L-245"><span class="linenos">245</span></a> <span class="n">nodes</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="o">.</span><span class="n">values</span><span class="p">()))</span>
|
||||
</span><span id="L-246"><a href="#L-246"><span class="linenos">246</span></a> <span class="n">edges</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">edges</span><span class="p">)</span>
|
||||
</span><span id="L-247"><a href="#L-247"><span class="linenos">247</span></a> <span class="n">options</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">)</span>
|
||||
</span><span id="L-248"><a href="#L-248"><span class="linenos">248</span></a> <span class="n">imports</span> <span class="o">=</span> <span class="p">(</span>
|
||||
</span><span id="L-249"><a href="#L-249"><span class="linenos">249</span></a><span class="w"> </span><span class="sd">"""<script type="text/javascript" src="https://unpkg.com/vis-data@latest/peer/umd/vis-data.min.js"></script></span>
|
||||
</span><span id="L-250"><a href="#L-250"><span class="linenos">250</span></a><span class="sd"> <script type="text/javascript" src="https://unpkg.com/vis-network@latest/peer/umd/vis-network.min.js"></script></span>
|
||||
</span><span id="L-251"><a href="#L-251"><span class="linenos">251</span></a><span class="sd"> <link rel="stylesheet" type="text/css" href="https://unpkg.com/vis-network/styles/vis-network.min.css" />"""</span>
|
||||
</span><span id="L-252"><a href="#L-252"><span class="linenos">252</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span>
|
||||
</span><span id="L-253"><a href="#L-253"><span class="linenos">253</span></a> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-254"><a href="#L-254"><span class="linenos">254</span></a> <span class="p">)</span>
|
||||
</span><span id="L-255"><a href="#L-255"><span class="linenos">255</span></a>
|
||||
</span><span id="L-256"><a href="#L-256"><span class="linenos">256</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"""<div></span>
|
||||
</span><span id="L-257"><a href="#L-257"><span class="linenos">257</span></a><span class="s2"> <div id="sqlglot-lineage"></div></span>
|
||||
</span><span id="L-258"><a href="#L-258"><span class="linenos">258</span></a><span class="s2"> </span><span class="si">{</span><span class="n">imports</span><span class="si">}</span>
|
||||
</span><span id="L-259"><a href="#L-259"><span class="linenos">259</span></a><span class="s2"> <script type="text/javascript"></span>
|
||||
</span><span id="L-260"><a href="#L-260"><span class="linenos">260</span></a><span class="s2"> var nodes = new vis.DataSet(</span><span class="si">{</span><span class="n">nodes</span><span class="si">}</span><span class="s2">)</span>
|
||||
</span><span id="L-261"><a href="#L-261"><span class="linenos">261</span></a><span class="s2"> nodes.forEach(row => row["title"] = new DOMParser().parseFromString(row["title"], "text/html").body.childNodes[0])</span>
|
||||
</span><span id="L-262"><a href="#L-262"><span class="linenos">262</span></a>
|
||||
</span><span id="L-263"><a href="#L-263"><span class="linenos">263</span></a><span class="s2"> new vis.Network(</span>
|
||||
</span><span id="L-264"><a href="#L-264"><span class="linenos">264</span></a><span class="s2"> document.getElementById("sqlglot-lineage"),</span>
|
||||
</span><span id="L-265"><a href="#L-265"><span class="linenos">265</span></a><span class="s2"> </span><span class="se">{{</span>
|
||||
</span><span id="L-266"><a href="#L-266"><span class="linenos">266</span></a><span class="s2"> nodes: nodes,</span>
|
||||
</span><span id="L-267"><a href="#L-267"><span class="linenos">267</span></a><span class="s2"> edges: new vis.DataSet(</span><span class="si">{</span><span class="n">edges</span><span class="si">}</span><span class="s2">)</span>
|
||||
</span><span id="L-268"><a href="#L-268"><span class="linenos">268</span></a><span class="s2"> </span><span class="se">}}</span><span class="s2">,</span>
|
||||
</span><span id="L-269"><a href="#L-269"><span class="linenos">269</span></a><span class="s2"> </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">,</span>
|
||||
</span><span id="L-270"><a href="#L-270"><span class="linenos">270</span></a><span class="s2"> )</span>
|
||||
</span><span id="L-271"><a href="#L-271"><span class="linenos">271</span></a><span class="s2"> </script></span>
|
||||
</span><span id="L-272"><a href="#L-272"><span class="linenos">272</span></a><span class="s2"></div>"""</span>
|
||||
</span><span id="L-273"><a href="#L-273"><span class="linenos">273</span></a>
|
||||
</span><span id="L-274"><a href="#L-274"><span class="linenos">274</span></a> <span class="k">def</span> <span class="nf">_repr_html_</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-275"><a href="#L-275"><span class="linenos">275</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="fm">__str__</span><span class="p">()</span>
|
||||
</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a> <span class="s2">"interaction"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a> <span class="s2">"dragNodes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a> <span class="s2">"selectable"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="L-213"><a href="#L-213"><span class="linenos">213</span></a> <span class="p">},</span>
|
||||
</span><span id="L-214"><a href="#L-214"><span class="linenos">214</span></a> <span class="s2">"physics"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-215"><a href="#L-215"><span class="linenos">215</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="L-216"><a href="#L-216"><span class="linenos">216</span></a> <span class="p">},</span>
|
||||
</span><span id="L-217"><a href="#L-217"><span class="linenos">217</span></a> <span class="s2">"edges"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a> <span class="s2">"arrows"</span><span class="p">:</span> <span class="s2">"to"</span><span class="p">,</span>
|
||||
</span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a> <span class="p">},</span>
|
||||
</span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> <span class="s2">"nodes"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a> <span class="s2">"font"</span><span class="p">:</span> <span class="s2">"20px monaco"</span><span class="p">,</span>
|
||||
</span><span id="L-222"><a href="#L-222"><span class="linenos">222</span></a> <span class="s2">"shape"</span><span class="p">:</span> <span class="s2">"box"</span><span class="p">,</span>
|
||||
</span><span id="L-223"><a href="#L-223"><span class="linenos">223</span></a> <span class="s2">"widthConstraint"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="L-224"><a href="#L-224"><span class="linenos">224</span></a> <span class="s2">"maximum"</span><span class="p">:</span> <span class="mi">300</span><span class="p">,</span>
|
||||
</span><span id="L-225"><a href="#L-225"><span class="linenos">225</span></a> <span class="p">},</span>
|
||||
</span><span id="L-226"><a href="#L-226"><span class="linenos">226</span></a> <span class="p">},</span>
|
||||
</span><span id="L-227"><a href="#L-227"><span class="linenos">227</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span>
|
||||
</span><span id="L-228"><a href="#L-228"><span class="linenos">228</span></a> <span class="p">}</span>
|
||||
</span><span id="L-229"><a href="#L-229"><span class="linenos">229</span></a>
|
||||
</span><span id="L-230"><a href="#L-230"><span class="linenos">230</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="L-231"><a href="#L-231"><span class="linenos">231</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">edges</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="L-232"><a href="#L-232"><span class="linenos">232</span></a>
|
||||
</span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">walk</span><span class="p">():</span>
|
||||
</span><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</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">Table</span><span class="p">):</span>
|
||||
</span><span id="L-235"><a href="#L-235"><span class="linenos">235</span></a> <span class="n">label</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"FROM </span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="L-236"><a href="#L-236"><span class="linenos">236</span></a> <span class="n">title</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"<pre>SELECT </span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> FROM </span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="si">}</span><span class="s2"></pre>"</span>
|
||||
</span><span id="L-237"><a href="#L-237"><span class="linenos">237</span></a> <span class="n">group</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
</span><span id="L-238"><a href="#L-238"><span class="linenos">238</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="L-239"><a href="#L-239"><span class="linenos">239</span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">pretty</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="L-240"><a href="#L-240"><span class="linenos">240</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span>
|
||||
</span><span id="L-241"><a href="#L-241"><span class="linenos">241</span></a> <span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Tag</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">n</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"<b>"</span><span class="p">,</span> <span class="n">postfix</span><span class="o">=</span><span class="s2">"</b>"</span><span class="p">)</span>
|
||||
</span><span id="L-242"><a href="#L-242"><span class="linenos">242</span></a> <span class="k">if</span> <span class="n">n</span> <span class="ow">is</span> <span class="n">node</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="L-243"><a href="#L-243"><span class="linenos">243</span></a> <span class="k">else</span> <span class="n">n</span><span class="p">,</span>
|
||||
</span><span id="L-244"><a href="#L-244"><span class="linenos">244</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="L-245"><a href="#L-245"><span class="linenos">245</span></a> <span class="p">)</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">pretty</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="L-246"><a href="#L-246"><span class="linenos">246</span></a> <span class="n">title</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"<pre></span><span class="si">{</span><span class="n">source</span><span class="si">}</span><span class="s2"></pre>"</span>
|
||||
</span><span id="L-247"><a href="#L-247"><span class="linenos">247</span></a> <span class="n">group</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
</span><span id="L-248"><a href="#L-248"><span class="linenos">248</span></a>
|
||||
</span><span id="L-249"><a href="#L-249"><span class="linenos">249</span></a> <span class="n">node_id</span> <span class="o">=</span> <span class="nb">id</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
|
||||
</span><span id="L-250"><a href="#L-250"><span class="linenos">250</span></a>
|
||||
</span><span id="L-251"><a href="#L-251"><span class="linenos">251</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">[</span><span class="n">node_id</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="L-252"><a href="#L-252"><span class="linenos">252</span></a> <span class="s2">"id"</span><span class="p">:</span> <span class="n">node_id</span><span class="p">,</span>
|
||||
</span><span id="L-253"><a href="#L-253"><span class="linenos">253</span></a> <span class="s2">"label"</span><span class="p">:</span> <span class="n">label</span><span class="p">,</span>
|
||||
</span><span id="L-254"><a href="#L-254"><span class="linenos">254</span></a> <span class="s2">"title"</span><span class="p">:</span> <span class="n">title</span><span class="p">,</span>
|
||||
</span><span id="L-255"><a href="#L-255"><span class="linenos">255</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="n">group</span><span class="p">,</span>
|
||||
</span><span id="L-256"><a href="#L-256"><span class="linenos">256</span></a> <span class="p">}</span>
|
||||
</span><span id="L-257"><a href="#L-257"><span class="linenos">257</span></a>
|
||||
</span><span id="L-258"><a href="#L-258"><span class="linenos">258</span></a> <span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="p">:</span>
|
||||
</span><span id="L-259"><a href="#L-259"><span class="linenos">259</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">edges</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s2">"from"</span><span class="p">:</span> <span class="n">node_id</span><span class="p">,</span> <span class="s2">"to"</span><span class="p">:</span> <span class="nb">id</span><span class="p">(</span><span class="n">d</span><span class="p">)})</span>
|
||||
</span><span id="L-260"><a href="#L-260"><span class="linenos">260</span></a>
|
||||
</span><span id="L-261"><a href="#L-261"><span class="linenos">261</span></a> <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="L-262"><a href="#L-262"><span class="linenos">262</span></a> <span class="n">nodes</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="o">.</span><span class="n">values</span><span class="p">()))</span>
|
||||
</span><span id="L-263"><a href="#L-263"><span class="linenos">263</span></a> <span class="n">edges</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">edges</span><span class="p">)</span>
|
||||
</span><span id="L-264"><a href="#L-264"><span class="linenos">264</span></a> <span class="n">options</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">)</span>
|
||||
</span><span id="L-265"><a href="#L-265"><span class="linenos">265</span></a> <span class="n">imports</span> <span class="o">=</span> <span class="p">(</span>
|
||||
</span><span id="L-266"><a href="#L-266"><span class="linenos">266</span></a><span class="w"> </span><span class="sd">"""<script type="text/javascript" src="https://unpkg.com/vis-data@latest/peer/umd/vis-data.min.js"></script></span>
|
||||
</span><span id="L-267"><a href="#L-267"><span class="linenos">267</span></a><span class="sd"> <script type="text/javascript" src="https://unpkg.com/vis-network@latest/peer/umd/vis-network.min.js"></script></span>
|
||||
</span><span id="L-268"><a href="#L-268"><span class="linenos">268</span></a><span class="sd"> <link rel="stylesheet" type="text/css" href="https://unpkg.com/vis-network/styles/vis-network.min.css" />"""</span>
|
||||
</span><span id="L-269"><a href="#L-269"><span class="linenos">269</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span>
|
||||
</span><span id="L-270"><a href="#L-270"><span class="linenos">270</span></a> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="L-271"><a href="#L-271"><span class="linenos">271</span></a> <span class="p">)</span>
|
||||
</span><span id="L-272"><a href="#L-272"><span class="linenos">272</span></a>
|
||||
</span><span id="L-273"><a href="#L-273"><span class="linenos">273</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"""<div></span>
|
||||
</span><span id="L-274"><a href="#L-274"><span class="linenos">274</span></a><span class="s2"> <div id="sqlglot-lineage"></div></span>
|
||||
</span><span id="L-275"><a href="#L-275"><span class="linenos">275</span></a><span class="s2"> </span><span class="si">{</span><span class="n">imports</span><span class="si">}</span>
|
||||
</span><span id="L-276"><a href="#L-276"><span class="linenos">276</span></a><span class="s2"> <script type="text/javascript"></span>
|
||||
</span><span id="L-277"><a href="#L-277"><span class="linenos">277</span></a><span class="s2"> var nodes = new vis.DataSet(</span><span class="si">{</span><span class="n">nodes</span><span class="si">}</span><span class="s2">)</span>
|
||||
</span><span id="L-278"><a href="#L-278"><span class="linenos">278</span></a><span class="s2"> nodes.forEach(row => row["title"] = new DOMParser().parseFromString(row["title"], "text/html").body.childNodes[0])</span>
|
||||
</span><span id="L-279"><a href="#L-279"><span class="linenos">279</span></a>
|
||||
</span><span id="L-280"><a href="#L-280"><span class="linenos">280</span></a><span class="s2"> new vis.Network(</span>
|
||||
</span><span id="L-281"><a href="#L-281"><span class="linenos">281</span></a><span class="s2"> document.getElementById("sqlglot-lineage"),</span>
|
||||
</span><span id="L-282"><a href="#L-282"><span class="linenos">282</span></a><span class="s2"> </span><span class="se">{{</span>
|
||||
</span><span id="L-283"><a href="#L-283"><span class="linenos">283</span></a><span class="s2"> nodes: nodes,</span>
|
||||
</span><span id="L-284"><a href="#L-284"><span class="linenos">284</span></a><span class="s2"> edges: new vis.DataSet(</span><span class="si">{</span><span class="n">edges</span><span class="si">}</span><span class="s2">)</span>
|
||||
</span><span id="L-285"><a href="#L-285"><span class="linenos">285</span></a><span class="s2"> </span><span class="se">}}</span><span class="s2">,</span>
|
||||
</span><span id="L-286"><a href="#L-286"><span class="linenos">286</span></a><span class="s2"> </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">,</span>
|
||||
</span><span id="L-287"><a href="#L-287"><span class="linenos">287</span></a><span class="s2"> )</span>
|
||||
</span><span id="L-288"><a href="#L-288"><span class="linenos">288</span></a><span class="s2"> </script></span>
|
||||
</span><span id="L-289"><a href="#L-289"><span class="linenos">289</span></a><span class="s2"></div>"""</span>
|
||||
</span><span id="L-290"><a href="#L-290"><span class="linenos">290</span></a>
|
||||
</span><span id="L-291"><a href="#L-291"><span class="linenos">291</span></a> <span class="k">def</span> <span class="nf">_repr_html_</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="L-292"><a href="#L-292"><span class="linenos">292</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="fm">__str__</span><span class="p">()</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -639,45 +656,62 @@
|
|||
</span><span id="lineage-124"><a href="#lineage-124"><span class="linenos">124</span></a>
|
||||
</span><span id="lineage-125"><a href="#lineage-125"><span class="linenos">125</span></a> <span class="k">return</span> <span class="n">upstream</span>
|
||||
</span><span id="lineage-126"><a href="#lineage-126"><span class="linenos">126</span></a>
|
||||
</span><span id="lineage-127"><a href="#lineage-127"><span class="linenos">127</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">scope</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">Select</span><span class="p">):</span>
|
||||
</span><span id="lineage-128"><a href="#lineage-128"><span class="linenos">128</span></a> <span class="c1"># For better ergonomics in our node labels, replace the full select with</span>
|
||||
</span><span id="lineage-129"><a href="#lineage-129"><span class="linenos">129</span></a> <span class="c1"># a version that has only the column we care about.</span>
|
||||
</span><span id="lineage-130"><a href="#lineage-130"><span class="linenos">130</span></a> <span class="c1"># "x", SELECT x, y FROM foo</span>
|
||||
</span><span id="lineage-131"><a href="#lineage-131"><span class="linenos">131</span></a> <span class="c1"># => "x", SELECT x FROM foo</span>
|
||||
</span><span id="lineage-132"><a href="#lineage-132"><span class="linenos">132</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">t</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">Expression</span><span class="p">,</span> <span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span>
|
||||
</span><span id="lineage-133"><a href="#lineage-133"><span class="linenos">133</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="lineage-134"><a href="#lineage-134"><span class="linenos">134</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="lineage-127"><a href="#lineage-127"><span class="linenos">127</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="n">select</span><span class="o">.</span><span class="n">unalias</span><span class="p">()</span>
|
||||
</span><span id="lineage-128"><a href="#lineage-128"><span class="linenos">128</span></a>
|
||||
</span><span id="lineage-129"><a href="#lineage-129"><span class="linenos">129</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">subquery</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">):</span>
|
||||
</span><span id="lineage-130"><a href="#lineage-130"><span class="linenos">130</span></a> <span class="n">upstream</span> <span class="o">=</span> <span class="n">upstream</span> <span class="ow">or</span> <span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s2">"SUBQUERY"</span><span class="p">,</span> <span class="n">source</span><span class="o">=</span><span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">select</span><span class="p">)</span>
|
||||
</span><span id="lineage-131"><a href="#lineage-131"><span class="linenos">131</span></a> <span class="n">scope</span> <span class="o">=</span> <span class="n">t</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">Scope</span><span class="p">,</span> <span class="n">build_scope</span><span class="p">(</span><span class="n">subquery</span><span class="o">.</span><span class="n">unnest</span><span class="p">()))</span>
|
||||
</span><span id="lineage-132"><a href="#lineage-132"><span class="linenos">132</span></a>
|
||||
</span><span id="lineage-133"><a href="#lineage-133"><span class="linenos">133</span></a> <span class="k">for</span> <span class="n">select</span> <span class="ow">in</span> <span class="n">subquery</span><span class="o">.</span><span class="n">named_selects</span><span class="p">:</span>
|
||||
</span><span id="lineage-134"><a href="#lineage-134"><span class="linenos">134</span></a> <span class="n">to_node</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">scope</span><span class="o">=</span><span class="n">scope</span><span class="p">,</span> <span class="n">upstream</span><span class="o">=</span><span class="n">upstream</span><span class="p">)</span>
|
||||
</span><span id="lineage-135"><a href="#lineage-135"><span class="linenos">135</span></a>
|
||||
</span><span id="lineage-136"><a href="#lineage-136"><span class="linenos">136</span></a> <span class="c1"># Create the node for this step in the lineage chain, and attach it to the previous one.</span>
|
||||
</span><span id="lineage-137"><a href="#lineage-137"><span class="linenos">137</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span>
|
||||
</span><span id="lineage-138"><a href="#lineage-138"><span class="linenos">138</span></a> <span class="n">name</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">scope_name</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">column</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">scope_name</span> <span class="k">else</span> <span class="nb">str</span><span class="p">(</span><span class="n">column</span><span class="p">),</span>
|
||||
</span><span id="lineage-139"><a href="#lineage-139"><span class="linenos">139</span></a> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span>
|
||||
</span><span id="lineage-140"><a href="#lineage-140"><span class="linenos">140</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">select</span><span class="p">,</span>
|
||||
</span><span id="lineage-141"><a href="#lineage-141"><span class="linenos">141</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span>
|
||||
</span><span id="lineage-142"><a href="#lineage-142"><span class="linenos">142</span></a> <span class="p">)</span>
|
||||
</span><span id="lineage-143"><a href="#lineage-143"><span class="linenos">143</span></a> <span class="k">if</span> <span class="n">upstream</span><span class="p">:</span>
|
||||
</span><span id="lineage-144"><a href="#lineage-144"><span class="linenos">144</span></a> <span class="n">upstream</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
|
||||
</span><span id="lineage-145"><a href="#lineage-145"><span class="linenos">145</span></a>
|
||||
</span><span id="lineage-146"><a href="#lineage-146"><span class="linenos">146</span></a> <span class="c1"># Find all columns that went into creating this one to list their lineage nodes.</span>
|
||||
</span><span id="lineage-147"><a href="#lineage-147"><span class="linenos">147</span></a> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">select</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="lineage-148"><a href="#lineage-148"><span class="linenos">148</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">table</span>
|
||||
</span><span id="lineage-149"><a href="#lineage-149"><span class="linenos">149</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">)</span>
|
||||
</span><span id="lineage-150"><a href="#lineage-150"><span class="linenos">150</span></a>
|
||||
</span><span id="lineage-151"><a href="#lineage-151"><span class="linenos">151</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">):</span>
|
||||
</span><span id="lineage-152"><a href="#lineage-152"><span class="linenos">152</span></a> <span class="c1"># The table itself came from a more specific scope. Recurse into that one using the unaliased column name.</span>
|
||||
</span><span id="lineage-153"><a href="#lineage-153"><span class="linenos">153</span></a> <span class="n">to_node</span><span class="p">(</span>
|
||||
</span><span id="lineage-154"><a href="#lineage-154"><span class="linenos">154</span></a> <span class="n">c</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">scope</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">scope_name</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">upstream</span><span class="o">=</span><span class="n">node</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">aliases</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">)</span>
|
||||
</span><span id="lineage-155"><a href="#lineage-155"><span class="linenos">155</span></a> <span class="p">)</span>
|
||||
</span><span id="lineage-156"><a href="#lineage-156"><span class="linenos">156</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="lineage-157"><a href="#lineage-157"><span class="linenos">157</span></a> <span class="c1"># The source is not a scope - we've reached the end of the line. At this point, if a source is not found</span>
|
||||
</span><span id="lineage-158"><a href="#lineage-158"><span class="linenos">158</span></a> <span class="c1"># it means this column's lineage is unknown. This can happen if the definition of a source used in a query</span>
|
||||
</span><span id="lineage-159"><a href="#lineage-159"><span class="linenos">159</span></a> <span class="c1"># is not passed into the `sources` map.</span>
|
||||
</span><span id="lineage-160"><a href="#lineage-160"><span class="linenos">160</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">source</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">()</span>
|
||||
</span><span id="lineage-161"><a href="#lineage-161"><span class="linenos">161</span></a> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">sql</span><span class="p">(),</span> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">source</span><span class="p">))</span>
|
||||
</span><span id="lineage-162"><a href="#lineage-162"><span class="linenos">162</span></a>
|
||||
</span><span id="lineage-163"><a href="#lineage-163"><span class="linenos">163</span></a> <span class="k">return</span> <span class="n">node</span>
|
||||
</span><span id="lineage-164"><a href="#lineage-164"><span class="linenos">164</span></a>
|
||||
</span><span id="lineage-165"><a href="#lineage-165"><span class="linenos">165</span></a> <span class="k">return</span> <span class="n">to_node</span><span class="p">(</span><span class="n">column</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="n">column</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">scope</span><span class="p">)</span>
|
||||
</span><span id="lineage-136"><a href="#lineage-136"><span class="linenos">136</span></a> <span class="k">return</span> <span class="n">upstream</span>
|
||||
</span><span id="lineage-137"><a href="#lineage-137"><span class="linenos">137</span></a>
|
||||
</span><span id="lineage-138"><a href="#lineage-138"><span class="linenos">138</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">scope</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">Select</span><span class="p">):</span>
|
||||
</span><span id="lineage-139"><a href="#lineage-139"><span class="linenos">139</span></a> <span class="c1"># For better ergonomics in our node labels, replace the full select with</span>
|
||||
</span><span id="lineage-140"><a href="#lineage-140"><span class="linenos">140</span></a> <span class="c1"># a version that has only the column we care about.</span>
|
||||
</span><span id="lineage-141"><a href="#lineage-141"><span class="linenos">141</span></a> <span class="c1"># "x", SELECT x, y FROM foo</span>
|
||||
</span><span id="lineage-142"><a href="#lineage-142"><span class="linenos">142</span></a> <span class="c1"># => "x", SELECT x FROM foo</span>
|
||||
</span><span id="lineage-143"><a href="#lineage-143"><span class="linenos">143</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">t</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">Expression</span><span class="p">,</span> <span class="n">scope</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="n">select</span><span class="p">,</span> <span class="n">append</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span>
|
||||
</span><span id="lineage-144"><a href="#lineage-144"><span class="linenos">144</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="lineage-145"><a href="#lineage-145"><span class="linenos">145</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="lineage-146"><a href="#lineage-146"><span class="linenos">146</span></a>
|
||||
</span><span id="lineage-147"><a href="#lineage-147"><span class="linenos">147</span></a> <span class="c1"># Create the node for this step in the lineage chain, and attach it to the previous one.</span>
|
||||
</span><span id="lineage-148"><a href="#lineage-148"><span class="linenos">148</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">Node</span><span class="p">(</span>
|
||||
</span><span id="lineage-149"><a href="#lineage-149"><span class="linenos">149</span></a> <span class="n">name</span><span class="o">=</span><span class="sa">f</span><span class="s2">"</span><span class="si">{</span><span class="n">scope_name</span><span class="si">}</span><span class="s2">.</span><span class="si">{</span><span class="n">column</span><span class="si">}</span><span class="s2">"</span> <span class="k">if</span> <span class="n">scope_name</span> <span class="k">else</span> <span class="nb">str</span><span class="p">(</span><span class="n">column</span><span class="p">),</span>
|
||||
</span><span id="lineage-150"><a href="#lineage-150"><span class="linenos">150</span></a> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span>
|
||||
</span><span id="lineage-151"><a href="#lineage-151"><span class="linenos">151</span></a> <span class="n">expression</span><span class="o">=</span><span class="n">select</span><span class="p">,</span>
|
||||
</span><span id="lineage-152"><a href="#lineage-152"><span class="linenos">152</span></a> <span class="n">alias</span><span class="o">=</span><span class="n">alias</span> <span class="ow">or</span> <span class="s2">""</span><span class="p">,</span>
|
||||
</span><span id="lineage-153"><a href="#lineage-153"><span class="linenos">153</span></a> <span class="p">)</span>
|
||||
</span><span id="lineage-154"><a href="#lineage-154"><span class="linenos">154</span></a> <span class="k">if</span> <span class="n">upstream</span><span class="p">:</span>
|
||||
</span><span id="lineage-155"><a href="#lineage-155"><span class="linenos">155</span></a> <span class="n">upstream</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
|
||||
</span><span id="lineage-156"><a href="#lineage-156"><span class="linenos">156</span></a>
|
||||
</span><span id="lineage-157"><a href="#lineage-157"><span class="linenos">157</span></a> <span class="c1"># Find all columns that went into creating this one to list their lineage nodes.</span>
|
||||
</span><span id="lineage-158"><a href="#lineage-158"><span class="linenos">158</span></a> <span class="n">source_columns</span> <span class="o">=</span> <span class="nb">set</span><span class="p">(</span><span class="n">select</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="lineage-159"><a href="#lineage-159"><span class="linenos">159</span></a>
|
||||
</span><span id="lineage-160"><a href="#lineage-160"><span class="linenos">160</span></a> <span class="c1"># If the source is a UDTF find columns used in the UTDF to generate the table</span>
|
||||
</span><span id="lineage-161"><a href="#lineage-161"><span class="linenos">161</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UDTF</span><span class="p">):</span>
|
||||
</span><span id="lineage-162"><a href="#lineage-162"><span class="linenos">162</span></a> <span class="n">source_columns</span> <span class="o">|=</span> <span class="nb">set</span><span class="p">(</span><span class="n">source</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="lineage-163"><a href="#lineage-163"><span class="linenos">163</span></a>
|
||||
</span><span id="lineage-164"><a href="#lineage-164"><span class="linenos">164</span></a> <span class="k">for</span> <span class="n">c</span> <span class="ow">in</span> <span class="n">source_columns</span><span class="p">:</span>
|
||||
</span><span id="lineage-165"><a href="#lineage-165"><span class="linenos">165</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">c</span><span class="o">.</span><span class="n">table</span>
|
||||
</span><span id="lineage-166"><a href="#lineage-166"><span class="linenos">166</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">scope</span><span class="o">.</span><span class="n">sources</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">)</span>
|
||||
</span><span id="lineage-167"><a href="#lineage-167"><span class="linenos">167</span></a>
|
||||
</span><span id="lineage-168"><a href="#lineage-168"><span class="linenos">168</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">source</span><span class="p">,</span> <span class="n">Scope</span><span class="p">):</span>
|
||||
</span><span id="lineage-169"><a href="#lineage-169"><span class="linenos">169</span></a> <span class="c1"># The table itself came from a more specific scope. Recurse into that one using the unaliased column name.</span>
|
||||
</span><span id="lineage-170"><a href="#lineage-170"><span class="linenos">170</span></a> <span class="n">to_node</span><span class="p">(</span>
|
||||
</span><span id="lineage-171"><a href="#lineage-171"><span class="linenos">171</span></a> <span class="n">c</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">scope</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">scope_name</span><span class="o">=</span><span class="n">table</span><span class="p">,</span> <span class="n">upstream</span><span class="o">=</span><span class="n">node</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="n">aliases</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">table</span><span class="p">)</span>
|
||||
</span><span id="lineage-172"><a href="#lineage-172"><span class="linenos">172</span></a> <span class="p">)</span>
|
||||
</span><span id="lineage-173"><a href="#lineage-173"><span class="linenos">173</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="lineage-174"><a href="#lineage-174"><span class="linenos">174</span></a> <span class="c1"># The source is not a scope - we've reached the end of the line. At this point, if a source is not found</span>
|
||||
</span><span id="lineage-175"><a href="#lineage-175"><span class="linenos">175</span></a> <span class="c1"># it means this column's lineage is unknown. This can happen if the definition of a source used in a query</span>
|
||||
</span><span id="lineage-176"><a href="#lineage-176"><span class="linenos">176</span></a> <span class="c1"># is not passed into the `sources` map.</span>
|
||||
</span><span id="lineage-177"><a href="#lineage-177"><span class="linenos">177</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">source</span> <span class="ow">or</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">()</span>
|
||||
</span><span id="lineage-178"><a href="#lineage-178"><span class="linenos">178</span></a> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">Node</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">c</span><span class="o">.</span><span class="n">sql</span><span class="p">(),</span> <span class="n">source</span><span class="o">=</span><span class="n">source</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">source</span><span class="p">))</span>
|
||||
</span><span id="lineage-179"><a href="#lineage-179"><span class="linenos">179</span></a>
|
||||
</span><span id="lineage-180"><a href="#lineage-180"><span class="linenos">180</span></a> <span class="k">return</span> <span class="n">node</span>
|
||||
</span><span id="lineage-181"><a href="#lineage-181"><span class="linenos">181</span></a>
|
||||
</span><span id="lineage-182"><a href="#lineage-182"><span class="linenos">182</span></a> <span class="k">return</span> <span class="n">to_node</span><span class="p">(</span><span class="n">column</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">column</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="n">column</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">scope</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -714,115 +748,115 @@
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#LineageHTML"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="LineageHTML-168"><a href="#LineageHTML-168"><span class="linenos">168</span></a><span class="k">class</span> <span class="nc">LineageHTML</span><span class="p">:</span>
|
||||
</span><span id="LineageHTML-169"><a href="#LineageHTML-169"><span class="linenos">169</span></a><span class="w"> </span><span class="sd">"""Node to HTML generator using vis.js.</span>
|
||||
</span><span id="LineageHTML-170"><a href="#LineageHTML-170"><span class="linenos">170</span></a>
|
||||
</span><span id="LineageHTML-171"><a href="#LineageHTML-171"><span class="linenos">171</span></a><span class="sd"> https://visjs.github.io/vis-network/docs/network/</span>
|
||||
</span><span id="LineageHTML-172"><a href="#LineageHTML-172"><span class="linenos">172</span></a><span class="sd"> """</span>
|
||||
</span><span id="LineageHTML-173"><a href="#LineageHTML-173"><span class="linenos">173</span></a>
|
||||
</span><span id="LineageHTML-174"><a href="#LineageHTML-174"><span class="linenos">174</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
||||
</span><span id="LineageHTML-175"><a href="#LineageHTML-175"><span class="linenos">175</span></a> <span class="bp">self</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-176"><a href="#LineageHTML-176"><span class="linenos">176</span></a> <span class="n">node</span><span class="p">:</span> <span class="n">Node</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-177"><a href="#LineageHTML-177"><span class="linenos">177</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-178"><a href="#LineageHTML-178"><span class="linenos">178</span></a> <span class="n">imports</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="LineageHTML-179"><a href="#LineageHTML-179"><span class="linenos">179</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-180"><a href="#LineageHTML-180"><span class="linenos">180</span></a> <span class="p">):</span>
|
||||
</span><span id="LineageHTML-181"><a href="#LineageHTML-181"><span class="linenos">181</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">node</span> <span class="o">=</span> <span class="n">node</span>
|
||||
</span><span id="LineageHTML-182"><a href="#LineageHTML-182"><span class="linenos">182</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span> <span class="o">=</span> <span class="n">imports</span>
|
||||
</span><span id="LineageHTML-183"><a href="#LineageHTML-183"><span class="linenos">183</span></a>
|
||||
</span><span id="LineageHTML-184"><a href="#LineageHTML-184"><span class="linenos">184</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML-185"><a href="#LineageHTML-185"><span class="linenos">185</span></a> <span class="s2">"height"</span><span class="p">:</span> <span class="s2">"500px"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-186"><a href="#LineageHTML-186"><span class="linenos">186</span></a> <span class="s2">"width"</span><span class="p">:</span> <span class="s2">"100%"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-187"><a href="#LineageHTML-187"><span class="linenos">187</span></a> <span class="s2">"layout"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML-188"><a href="#LineageHTML-188"><span class="linenos">188</span></a> <span class="s2">"hierarchical"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML-189"><a href="#LineageHTML-189"><span class="linenos">189</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-190"><a href="#LineageHTML-190"><span class="linenos">190</span></a> <span class="s2">"nodeSpacing"</span><span class="p">:</span> <span class="mi">200</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-191"><a href="#LineageHTML-191"><span class="linenos">191</span></a> <span class="s2">"sortMethod"</span><span class="p">:</span> <span class="s2">"directed"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-192"><a href="#LineageHTML-192"><span class="linenos">192</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML-193"><a href="#LineageHTML-193"><span class="linenos">193</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML-194"><a href="#LineageHTML-194"><span class="linenos">194</span></a> <span class="s2">"interaction"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML-195"><a href="#LineageHTML-195"><span class="linenos">195</span></a> <span class="s2">"dragNodes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-196"><a href="#LineageHTML-196"><span class="linenos">196</span></a> <span class="s2">"selectable"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-197"><a href="#LineageHTML-197"><span class="linenos">197</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML-198"><a href="#LineageHTML-198"><span class="linenos">198</span></a> <span class="s2">"physics"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML-199"><a href="#LineageHTML-199"><span class="linenos">199</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-200"><a href="#LineageHTML-200"><span class="linenos">200</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML-201"><a href="#LineageHTML-201"><span class="linenos">201</span></a> <span class="s2">"edges"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML-202"><a href="#LineageHTML-202"><span class="linenos">202</span></a> <span class="s2">"arrows"</span><span class="p">:</span> <span class="s2">"to"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-203"><a href="#LineageHTML-203"><span class="linenos">203</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML-204"><a href="#LineageHTML-204"><span class="linenos">204</span></a> <span class="s2">"nodes"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML-205"><a href="#LineageHTML-205"><span class="linenos">205</span></a> <span class="s2">"font"</span><span class="p">:</span> <span class="s2">"20px monaco"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-206"><a href="#LineageHTML-206"><span class="linenos">206</span></a> <span class="s2">"shape"</span><span class="p">:</span> <span class="s2">"box"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-207"><a href="#LineageHTML-207"><span class="linenos">207</span></a> <span class="s2">"widthConstraint"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML-208"><a href="#LineageHTML-208"><span class="linenos">208</span></a> <span class="s2">"maximum"</span><span class="p">:</span> <span class="mi">300</span><span class="p">,</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="LineageHTML-185"><a href="#LineageHTML-185"><span class="linenos">185</span></a><span class="k">class</span> <span class="nc">LineageHTML</span><span class="p">:</span>
|
||||
</span><span id="LineageHTML-186"><a href="#LineageHTML-186"><span class="linenos">186</span></a><span class="w"> </span><span class="sd">"""Node to HTML generator using vis.js.</span>
|
||||
</span><span id="LineageHTML-187"><a href="#LineageHTML-187"><span class="linenos">187</span></a>
|
||||
</span><span id="LineageHTML-188"><a href="#LineageHTML-188"><span class="linenos">188</span></a><span class="sd"> https://visjs.github.io/vis-network/docs/network/</span>
|
||||
</span><span id="LineageHTML-189"><a href="#LineageHTML-189"><span class="linenos">189</span></a><span class="sd"> """</span>
|
||||
</span><span id="LineageHTML-190"><a href="#LineageHTML-190"><span class="linenos">190</span></a>
|
||||
</span><span id="LineageHTML-191"><a href="#LineageHTML-191"><span class="linenos">191</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
||||
</span><span id="LineageHTML-192"><a href="#LineageHTML-192"><span class="linenos">192</span></a> <span class="bp">self</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-193"><a href="#LineageHTML-193"><span class="linenos">193</span></a> <span class="n">node</span><span class="p">:</span> <span class="n">Node</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-194"><a href="#LineageHTML-194"><span class="linenos">194</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-195"><a href="#LineageHTML-195"><span class="linenos">195</span></a> <span class="n">imports</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="LineageHTML-196"><a href="#LineageHTML-196"><span class="linenos">196</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-197"><a href="#LineageHTML-197"><span class="linenos">197</span></a> <span class="p">):</span>
|
||||
</span><span id="LineageHTML-198"><a href="#LineageHTML-198"><span class="linenos">198</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">node</span> <span class="o">=</span> <span class="n">node</span>
|
||||
</span><span id="LineageHTML-199"><a href="#LineageHTML-199"><span class="linenos">199</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span> <span class="o">=</span> <span class="n">imports</span>
|
||||
</span><span id="LineageHTML-200"><a href="#LineageHTML-200"><span class="linenos">200</span></a>
|
||||
</span><span id="LineageHTML-201"><a href="#LineageHTML-201"><span class="linenos">201</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML-202"><a href="#LineageHTML-202"><span class="linenos">202</span></a> <span class="s2">"height"</span><span class="p">:</span> <span class="s2">"500px"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-203"><a href="#LineageHTML-203"><span class="linenos">203</span></a> <span class="s2">"width"</span><span class="p">:</span> <span class="s2">"100%"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-204"><a href="#LineageHTML-204"><span class="linenos">204</span></a> <span class="s2">"layout"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML-205"><a href="#LineageHTML-205"><span class="linenos">205</span></a> <span class="s2">"hierarchical"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML-206"><a href="#LineageHTML-206"><span class="linenos">206</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-207"><a href="#LineageHTML-207"><span class="linenos">207</span></a> <span class="s2">"nodeSpacing"</span><span class="p">:</span> <span class="mi">200</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-208"><a href="#LineageHTML-208"><span class="linenos">208</span></a> <span class="s2">"sortMethod"</span><span class="p">:</span> <span class="s2">"directed"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-209"><a href="#LineageHTML-209"><span class="linenos">209</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML-210"><a href="#LineageHTML-210"><span class="linenos">210</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML-211"><a href="#LineageHTML-211"><span class="linenos">211</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-212"><a href="#LineageHTML-212"><span class="linenos">212</span></a> <span class="p">}</span>
|
||||
</span><span id="LineageHTML-213"><a href="#LineageHTML-213"><span class="linenos">213</span></a>
|
||||
</span><span id="LineageHTML-214"><a href="#LineageHTML-214"><span class="linenos">214</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="LineageHTML-215"><a href="#LineageHTML-215"><span class="linenos">215</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">edges</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="LineageHTML-216"><a href="#LineageHTML-216"><span class="linenos">216</span></a>
|
||||
</span><span id="LineageHTML-217"><a href="#LineageHTML-217"><span class="linenos">217</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">walk</span><span class="p">():</span>
|
||||
</span><span id="LineageHTML-218"><a href="#LineageHTML-218"><span class="linenos">218</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</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">Table</span><span class="p">):</span>
|
||||
</span><span id="LineageHTML-219"><a href="#LineageHTML-219"><span class="linenos">219</span></a> <span class="n">label</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"FROM </span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="LineageHTML-220"><a href="#LineageHTML-220"><span class="linenos">220</span></a> <span class="n">title</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"<pre>SELECT </span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> FROM </span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="si">}</span><span class="s2"></pre>"</span>
|
||||
</span><span id="LineageHTML-221"><a href="#LineageHTML-221"><span class="linenos">221</span></a> <span class="n">group</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
</span><span id="LineageHTML-222"><a href="#LineageHTML-222"><span class="linenos">222</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="LineageHTML-223"><a href="#LineageHTML-223"><span class="linenos">223</span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">pretty</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML-224"><a href="#LineageHTML-224"><span class="linenos">224</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span>
|
||||
</span><span id="LineageHTML-225"><a href="#LineageHTML-225"><span class="linenos">225</span></a> <span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Tag</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">n</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"<b>"</span><span class="p">,</span> <span class="n">postfix</span><span class="o">=</span><span class="s2">"</b>"</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML-226"><a href="#LineageHTML-226"><span class="linenos">226</span></a> <span class="k">if</span> <span class="n">n</span> <span class="ow">is</span> <span class="n">node</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="LineageHTML-227"><a href="#LineageHTML-227"><span class="linenos">227</span></a> <span class="k">else</span> <span class="n">n</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-228"><a href="#LineageHTML-228"><span class="linenos">228</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-229"><a href="#LineageHTML-229"><span class="linenos">229</span></a> <span class="p">)</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">pretty</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML-230"><a href="#LineageHTML-230"><span class="linenos">230</span></a> <span class="n">title</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"<pre></span><span class="si">{</span><span class="n">source</span><span class="si">}</span><span class="s2"></pre>"</span>
|
||||
</span><span id="LineageHTML-231"><a href="#LineageHTML-231"><span class="linenos">231</span></a> <span class="n">group</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
</span><span id="LineageHTML-232"><a href="#LineageHTML-232"><span class="linenos">232</span></a>
|
||||
</span><span id="LineageHTML-233"><a href="#LineageHTML-233"><span class="linenos">233</span></a> <span class="n">node_id</span> <span class="o">=</span> <span class="nb">id</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML-234"><a href="#LineageHTML-234"><span class="linenos">234</span></a>
|
||||
</span><span id="LineageHTML-235"><a href="#LineageHTML-235"><span class="linenos">235</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">[</span><span class="n">node_id</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML-236"><a href="#LineageHTML-236"><span class="linenos">236</span></a> <span class="s2">"id"</span><span class="p">:</span> <span class="n">node_id</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-237"><a href="#LineageHTML-237"><span class="linenos">237</span></a> <span class="s2">"label"</span><span class="p">:</span> <span class="n">label</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-238"><a href="#LineageHTML-238"><span class="linenos">238</span></a> <span class="s2">"title"</span><span class="p">:</span> <span class="n">title</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-239"><a href="#LineageHTML-239"><span class="linenos">239</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="n">group</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-240"><a href="#LineageHTML-240"><span class="linenos">240</span></a> <span class="p">}</span>
|
||||
</span><span id="LineageHTML-241"><a href="#LineageHTML-241"><span class="linenos">241</span></a>
|
||||
</span><span id="LineageHTML-242"><a href="#LineageHTML-242"><span class="linenos">242</span></a> <span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="p">:</span>
|
||||
</span><span id="LineageHTML-243"><a href="#LineageHTML-243"><span class="linenos">243</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">edges</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s2">"from"</span><span class="p">:</span> <span class="n">node_id</span><span class="p">,</span> <span class="s2">"to"</span><span class="p">:</span> <span class="nb">id</span><span class="p">(</span><span class="n">d</span><span class="p">)})</span>
|
||||
</span><span id="LineageHTML-244"><a href="#LineageHTML-244"><span class="linenos">244</span></a>
|
||||
</span><span id="LineageHTML-245"><a href="#LineageHTML-245"><span class="linenos">245</span></a> <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="LineageHTML-246"><a href="#LineageHTML-246"><span class="linenos">246</span></a> <span class="n">nodes</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="o">.</span><span class="n">values</span><span class="p">()))</span>
|
||||
</span><span id="LineageHTML-247"><a href="#LineageHTML-247"><span class="linenos">247</span></a> <span class="n">edges</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">edges</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML-248"><a href="#LineageHTML-248"><span class="linenos">248</span></a> <span class="n">options</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML-249"><a href="#LineageHTML-249"><span class="linenos">249</span></a> <span class="n">imports</span> <span class="o">=</span> <span class="p">(</span>
|
||||
</span><span id="LineageHTML-250"><a href="#LineageHTML-250"><span class="linenos">250</span></a><span class="w"> </span><span class="sd">"""<script type="text/javascript" src="https://unpkg.com/vis-data@latest/peer/umd/vis-data.min.js"></script></span>
|
||||
</span><span id="LineageHTML-251"><a href="#LineageHTML-251"><span class="linenos">251</span></a><span class="sd"> <script type="text/javascript" src="https://unpkg.com/vis-network@latest/peer/umd/vis-network.min.js"></script></span>
|
||||
</span><span id="LineageHTML-252"><a href="#LineageHTML-252"><span class="linenos">252</span></a><span class="sd"> <link rel="stylesheet" type="text/css" href="https://unpkg.com/vis-network/styles/vis-network.min.css" />"""</span>
|
||||
</span><span id="LineageHTML-253"><a href="#LineageHTML-253"><span class="linenos">253</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span>
|
||||
</span><span id="LineageHTML-254"><a href="#LineageHTML-254"><span class="linenos">254</span></a> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="LineageHTML-255"><a href="#LineageHTML-255"><span class="linenos">255</span></a> <span class="p">)</span>
|
||||
</span><span id="LineageHTML-256"><a href="#LineageHTML-256"><span class="linenos">256</span></a>
|
||||
</span><span id="LineageHTML-257"><a href="#LineageHTML-257"><span class="linenos">257</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"""<div></span>
|
||||
</span><span id="LineageHTML-258"><a href="#LineageHTML-258"><span class="linenos">258</span></a><span class="s2"> <div id="sqlglot-lineage"></div></span>
|
||||
</span><span id="LineageHTML-259"><a href="#LineageHTML-259"><span class="linenos">259</span></a><span class="s2"> </span><span class="si">{</span><span class="n">imports</span><span class="si">}</span>
|
||||
</span><span id="LineageHTML-260"><a href="#LineageHTML-260"><span class="linenos">260</span></a><span class="s2"> <script type="text/javascript"></span>
|
||||
</span><span id="LineageHTML-261"><a href="#LineageHTML-261"><span class="linenos">261</span></a><span class="s2"> var nodes = new vis.DataSet(</span><span class="si">{</span><span class="n">nodes</span><span class="si">}</span><span class="s2">)</span>
|
||||
</span><span id="LineageHTML-262"><a href="#LineageHTML-262"><span class="linenos">262</span></a><span class="s2"> nodes.forEach(row => row["title"] = new DOMParser().parseFromString(row["title"], "text/html").body.childNodes[0])</span>
|
||||
</span><span id="LineageHTML-263"><a href="#LineageHTML-263"><span class="linenos">263</span></a>
|
||||
</span><span id="LineageHTML-264"><a href="#LineageHTML-264"><span class="linenos">264</span></a><span class="s2"> new vis.Network(</span>
|
||||
</span><span id="LineageHTML-265"><a href="#LineageHTML-265"><span class="linenos">265</span></a><span class="s2"> document.getElementById("sqlglot-lineage"),</span>
|
||||
</span><span id="LineageHTML-266"><a href="#LineageHTML-266"><span class="linenos">266</span></a><span class="s2"> </span><span class="se">{{</span>
|
||||
</span><span id="LineageHTML-267"><a href="#LineageHTML-267"><span class="linenos">267</span></a><span class="s2"> nodes: nodes,</span>
|
||||
</span><span id="LineageHTML-268"><a href="#LineageHTML-268"><span class="linenos">268</span></a><span class="s2"> edges: new vis.DataSet(</span><span class="si">{</span><span class="n">edges</span><span class="si">}</span><span class="s2">)</span>
|
||||
</span><span id="LineageHTML-269"><a href="#LineageHTML-269"><span class="linenos">269</span></a><span class="s2"> </span><span class="se">}}</span><span class="s2">,</span>
|
||||
</span><span id="LineageHTML-270"><a href="#LineageHTML-270"><span class="linenos">270</span></a><span class="s2"> </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">,</span>
|
||||
</span><span id="LineageHTML-271"><a href="#LineageHTML-271"><span class="linenos">271</span></a><span class="s2"> )</span>
|
||||
</span><span id="LineageHTML-272"><a href="#LineageHTML-272"><span class="linenos">272</span></a><span class="s2"> </script></span>
|
||||
</span><span id="LineageHTML-273"><a href="#LineageHTML-273"><span class="linenos">273</span></a><span class="s2"></div>"""</span>
|
||||
</span><span id="LineageHTML-274"><a href="#LineageHTML-274"><span class="linenos">274</span></a>
|
||||
</span><span id="LineageHTML-275"><a href="#LineageHTML-275"><span class="linenos">275</span></a> <span class="k">def</span> <span class="nf">_repr_html_</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="LineageHTML-276"><a href="#LineageHTML-276"><span class="linenos">276</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="fm">__str__</span><span class="p">()</span>
|
||||
</span><span id="LineageHTML-211"><a href="#LineageHTML-211"><span class="linenos">211</span></a> <span class="s2">"interaction"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML-212"><a href="#LineageHTML-212"><span class="linenos">212</span></a> <span class="s2">"dragNodes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-213"><a href="#LineageHTML-213"><span class="linenos">213</span></a> <span class="s2">"selectable"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-214"><a href="#LineageHTML-214"><span class="linenos">214</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML-215"><a href="#LineageHTML-215"><span class="linenos">215</span></a> <span class="s2">"physics"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML-216"><a href="#LineageHTML-216"><span class="linenos">216</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-217"><a href="#LineageHTML-217"><span class="linenos">217</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML-218"><a href="#LineageHTML-218"><span class="linenos">218</span></a> <span class="s2">"edges"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML-219"><a href="#LineageHTML-219"><span class="linenos">219</span></a> <span class="s2">"arrows"</span><span class="p">:</span> <span class="s2">"to"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-220"><a href="#LineageHTML-220"><span class="linenos">220</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML-221"><a href="#LineageHTML-221"><span class="linenos">221</span></a> <span class="s2">"nodes"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML-222"><a href="#LineageHTML-222"><span class="linenos">222</span></a> <span class="s2">"font"</span><span class="p">:</span> <span class="s2">"20px monaco"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-223"><a href="#LineageHTML-223"><span class="linenos">223</span></a> <span class="s2">"shape"</span><span class="p">:</span> <span class="s2">"box"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-224"><a href="#LineageHTML-224"><span class="linenos">224</span></a> <span class="s2">"widthConstraint"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML-225"><a href="#LineageHTML-225"><span class="linenos">225</span></a> <span class="s2">"maximum"</span><span class="p">:</span> <span class="mi">300</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-226"><a href="#LineageHTML-226"><span class="linenos">226</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML-227"><a href="#LineageHTML-227"><span class="linenos">227</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML-228"><a href="#LineageHTML-228"><span class="linenos">228</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-229"><a href="#LineageHTML-229"><span class="linenos">229</span></a> <span class="p">}</span>
|
||||
</span><span id="LineageHTML-230"><a href="#LineageHTML-230"><span class="linenos">230</span></a>
|
||||
</span><span id="LineageHTML-231"><a href="#LineageHTML-231"><span class="linenos">231</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="LineageHTML-232"><a href="#LineageHTML-232"><span class="linenos">232</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">edges</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="LineageHTML-233"><a href="#LineageHTML-233"><span class="linenos">233</span></a>
|
||||
</span><span id="LineageHTML-234"><a href="#LineageHTML-234"><span class="linenos">234</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">walk</span><span class="p">():</span>
|
||||
</span><span id="LineageHTML-235"><a href="#LineageHTML-235"><span class="linenos">235</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</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">Table</span><span class="p">):</span>
|
||||
</span><span id="LineageHTML-236"><a href="#LineageHTML-236"><span class="linenos">236</span></a> <span class="n">label</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"FROM </span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="LineageHTML-237"><a href="#LineageHTML-237"><span class="linenos">237</span></a> <span class="n">title</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"<pre>SELECT </span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> FROM </span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="si">}</span><span class="s2"></pre>"</span>
|
||||
</span><span id="LineageHTML-238"><a href="#LineageHTML-238"><span class="linenos">238</span></a> <span class="n">group</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
</span><span id="LineageHTML-239"><a href="#LineageHTML-239"><span class="linenos">239</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="LineageHTML-240"><a href="#LineageHTML-240"><span class="linenos">240</span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">pretty</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML-241"><a href="#LineageHTML-241"><span class="linenos">241</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span>
|
||||
</span><span id="LineageHTML-242"><a href="#LineageHTML-242"><span class="linenos">242</span></a> <span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Tag</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">n</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"<b>"</span><span class="p">,</span> <span class="n">postfix</span><span class="o">=</span><span class="s2">"</b>"</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML-243"><a href="#LineageHTML-243"><span class="linenos">243</span></a> <span class="k">if</span> <span class="n">n</span> <span class="ow">is</span> <span class="n">node</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="LineageHTML-244"><a href="#LineageHTML-244"><span class="linenos">244</span></a> <span class="k">else</span> <span class="n">n</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-245"><a href="#LineageHTML-245"><span class="linenos">245</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-246"><a href="#LineageHTML-246"><span class="linenos">246</span></a> <span class="p">)</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">pretty</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML-247"><a href="#LineageHTML-247"><span class="linenos">247</span></a> <span class="n">title</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"<pre></span><span class="si">{</span><span class="n">source</span><span class="si">}</span><span class="s2"></pre>"</span>
|
||||
</span><span id="LineageHTML-248"><a href="#LineageHTML-248"><span class="linenos">248</span></a> <span class="n">group</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
</span><span id="LineageHTML-249"><a href="#LineageHTML-249"><span class="linenos">249</span></a>
|
||||
</span><span id="LineageHTML-250"><a href="#LineageHTML-250"><span class="linenos">250</span></a> <span class="n">node_id</span> <span class="o">=</span> <span class="nb">id</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML-251"><a href="#LineageHTML-251"><span class="linenos">251</span></a>
|
||||
</span><span id="LineageHTML-252"><a href="#LineageHTML-252"><span class="linenos">252</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">[</span><span class="n">node_id</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML-253"><a href="#LineageHTML-253"><span class="linenos">253</span></a> <span class="s2">"id"</span><span class="p">:</span> <span class="n">node_id</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-254"><a href="#LineageHTML-254"><span class="linenos">254</span></a> <span class="s2">"label"</span><span class="p">:</span> <span class="n">label</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-255"><a href="#LineageHTML-255"><span class="linenos">255</span></a> <span class="s2">"title"</span><span class="p">:</span> <span class="n">title</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-256"><a href="#LineageHTML-256"><span class="linenos">256</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="n">group</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML-257"><a href="#LineageHTML-257"><span class="linenos">257</span></a> <span class="p">}</span>
|
||||
</span><span id="LineageHTML-258"><a href="#LineageHTML-258"><span class="linenos">258</span></a>
|
||||
</span><span id="LineageHTML-259"><a href="#LineageHTML-259"><span class="linenos">259</span></a> <span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="p">:</span>
|
||||
</span><span id="LineageHTML-260"><a href="#LineageHTML-260"><span class="linenos">260</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">edges</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s2">"from"</span><span class="p">:</span> <span class="n">node_id</span><span class="p">,</span> <span class="s2">"to"</span><span class="p">:</span> <span class="nb">id</span><span class="p">(</span><span class="n">d</span><span class="p">)})</span>
|
||||
</span><span id="LineageHTML-261"><a href="#LineageHTML-261"><span class="linenos">261</span></a>
|
||||
</span><span id="LineageHTML-262"><a href="#LineageHTML-262"><span class="linenos">262</span></a> <span class="k">def</span> <span class="fm">__str__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
|
||||
</span><span id="LineageHTML-263"><a href="#LineageHTML-263"><span class="linenos">263</span></a> <span class="n">nodes</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="nb">list</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="o">.</span><span class="n">values</span><span class="p">()))</span>
|
||||
</span><span id="LineageHTML-264"><a href="#LineageHTML-264"><span class="linenos">264</span></a> <span class="n">edges</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">edges</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML-265"><a href="#LineageHTML-265"><span class="linenos">265</span></a> <span class="n">options</span> <span class="o">=</span> <span class="n">json</span><span class="o">.</span><span class="n">dumps</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">options</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML-266"><a href="#LineageHTML-266"><span class="linenos">266</span></a> <span class="n">imports</span> <span class="o">=</span> <span class="p">(</span>
|
||||
</span><span id="LineageHTML-267"><a href="#LineageHTML-267"><span class="linenos">267</span></a><span class="w"> </span><span class="sd">"""<script type="text/javascript" src="https://unpkg.com/vis-data@latest/peer/umd/vis-data.min.js"></script></span>
|
||||
</span><span id="LineageHTML-268"><a href="#LineageHTML-268"><span class="linenos">268</span></a><span class="sd"> <script type="text/javascript" src="https://unpkg.com/vis-network@latest/peer/umd/vis-network.min.js"></script></span>
|
||||
</span><span id="LineageHTML-269"><a href="#LineageHTML-269"><span class="linenos">269</span></a><span class="sd"> <link rel="stylesheet" type="text/css" href="https://unpkg.com/vis-network/styles/vis-network.min.css" />"""</span>
|
||||
</span><span id="LineageHTML-270"><a href="#LineageHTML-270"><span class="linenos">270</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span>
|
||||
</span><span id="LineageHTML-271"><a href="#LineageHTML-271"><span class="linenos">271</span></a> <span class="k">else</span> <span class="s2">""</span>
|
||||
</span><span id="LineageHTML-272"><a href="#LineageHTML-272"><span class="linenos">272</span></a> <span class="p">)</span>
|
||||
</span><span id="LineageHTML-273"><a href="#LineageHTML-273"><span class="linenos">273</span></a>
|
||||
</span><span id="LineageHTML-274"><a href="#LineageHTML-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">"""<div></span>
|
||||
</span><span id="LineageHTML-275"><a href="#LineageHTML-275"><span class="linenos">275</span></a><span class="s2"> <div id="sqlglot-lineage"></div></span>
|
||||
</span><span id="LineageHTML-276"><a href="#LineageHTML-276"><span class="linenos">276</span></a><span class="s2"> </span><span class="si">{</span><span class="n">imports</span><span class="si">}</span>
|
||||
</span><span id="LineageHTML-277"><a href="#LineageHTML-277"><span class="linenos">277</span></a><span class="s2"> <script type="text/javascript"></span>
|
||||
</span><span id="LineageHTML-278"><a href="#LineageHTML-278"><span class="linenos">278</span></a><span class="s2"> var nodes = new vis.DataSet(</span><span class="si">{</span><span class="n">nodes</span><span class="si">}</span><span class="s2">)</span>
|
||||
</span><span id="LineageHTML-279"><a href="#LineageHTML-279"><span class="linenos">279</span></a><span class="s2"> nodes.forEach(row => row["title"] = new DOMParser().parseFromString(row["title"], "text/html").body.childNodes[0])</span>
|
||||
</span><span id="LineageHTML-280"><a href="#LineageHTML-280"><span class="linenos">280</span></a>
|
||||
</span><span id="LineageHTML-281"><a href="#LineageHTML-281"><span class="linenos">281</span></a><span class="s2"> new vis.Network(</span>
|
||||
</span><span id="LineageHTML-282"><a href="#LineageHTML-282"><span class="linenos">282</span></a><span class="s2"> document.getElementById("sqlglot-lineage"),</span>
|
||||
</span><span id="LineageHTML-283"><a href="#LineageHTML-283"><span class="linenos">283</span></a><span class="s2"> </span><span class="se">{{</span>
|
||||
</span><span id="LineageHTML-284"><a href="#LineageHTML-284"><span class="linenos">284</span></a><span class="s2"> nodes: nodes,</span>
|
||||
</span><span id="LineageHTML-285"><a href="#LineageHTML-285"><span class="linenos">285</span></a><span class="s2"> edges: new vis.DataSet(</span><span class="si">{</span><span class="n">edges</span><span class="si">}</span><span class="s2">)</span>
|
||||
</span><span id="LineageHTML-286"><a href="#LineageHTML-286"><span class="linenos">286</span></a><span class="s2"> </span><span class="se">}}</span><span class="s2">,</span>
|
||||
</span><span id="LineageHTML-287"><a href="#LineageHTML-287"><span class="linenos">287</span></a><span class="s2"> </span><span class="si">{</span><span class="n">options</span><span class="si">}</span><span class="s2">,</span>
|
||||
</span><span id="LineageHTML-288"><a href="#LineageHTML-288"><span class="linenos">288</span></a><span class="s2"> )</span>
|
||||
</span><span id="LineageHTML-289"><a href="#LineageHTML-289"><span class="linenos">289</span></a><span class="s2"> </script></span>
|
||||
</span><span id="LineageHTML-290"><a href="#LineageHTML-290"><span class="linenos">290</span></a><span class="s2"></div>"""</span>
|
||||
</span><span id="LineageHTML-291"><a href="#LineageHTML-291"><span class="linenos">291</span></a>
|
||||
</span><span id="LineageHTML-292"><a href="#LineageHTML-292"><span class="linenos">292</span></a> <span class="k">def</span> <span class="nf">_repr_html_</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-></span> <span class="nb">str</span><span class="p">:</span>
|
||||
</span><span id="LineageHTML-293"><a href="#LineageHTML-293"><span class="linenos">293</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="fm">__str__</span><span class="p">()</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -842,76 +876,76 @@
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#LineageHTML.__init__"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="LineageHTML.__init__-174"><a href="#LineageHTML.__init__-174"><span class="linenos">174</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
||||
</span><span id="LineageHTML.__init__-175"><a href="#LineageHTML.__init__-175"><span class="linenos">175</span></a> <span class="bp">self</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-176"><a href="#LineageHTML.__init__-176"><span class="linenos">176</span></a> <span class="n">node</span><span class="p">:</span> <span class="n">Node</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-177"><a href="#LineageHTML.__init__-177"><span class="linenos">177</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-178"><a href="#LineageHTML.__init__-178"><span class="linenos">178</span></a> <span class="n">imports</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="LineageHTML.__init__-179"><a href="#LineageHTML.__init__-179"><span class="linenos">179</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-180"><a href="#LineageHTML.__init__-180"><span class="linenos">180</span></a> <span class="p">):</span>
|
||||
</span><span id="LineageHTML.__init__-181"><a href="#LineageHTML.__init__-181"><span class="linenos">181</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">node</span> <span class="o">=</span> <span class="n">node</span>
|
||||
</span><span id="LineageHTML.__init__-182"><a href="#LineageHTML.__init__-182"><span class="linenos">182</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span> <span class="o">=</span> <span class="n">imports</span>
|
||||
</span><span id="LineageHTML.__init__-183"><a href="#LineageHTML.__init__-183"><span class="linenos">183</span></a>
|
||||
</span><span id="LineageHTML.__init__-184"><a href="#LineageHTML.__init__-184"><span class="linenos">184</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML.__init__-185"><a href="#LineageHTML.__init__-185"><span class="linenos">185</span></a> <span class="s2">"height"</span><span class="p">:</span> <span class="s2">"500px"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-186"><a href="#LineageHTML.__init__-186"><span class="linenos">186</span></a> <span class="s2">"width"</span><span class="p">:</span> <span class="s2">"100%"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-187"><a href="#LineageHTML.__init__-187"><span class="linenos">187</span></a> <span class="s2">"layout"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML.__init__-188"><a href="#LineageHTML.__init__-188"><span class="linenos">188</span></a> <span class="s2">"hierarchical"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML.__init__-189"><a href="#LineageHTML.__init__-189"><span class="linenos">189</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-190"><a href="#LineageHTML.__init__-190"><span class="linenos">190</span></a> <span class="s2">"nodeSpacing"</span><span class="p">:</span> <span class="mi">200</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-191"><a href="#LineageHTML.__init__-191"><span class="linenos">191</span></a> <span class="s2">"sortMethod"</span><span class="p">:</span> <span class="s2">"directed"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-192"><a href="#LineageHTML.__init__-192"><span class="linenos">192</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML.__init__-193"><a href="#LineageHTML.__init__-193"><span class="linenos">193</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML.__init__-194"><a href="#LineageHTML.__init__-194"><span class="linenos">194</span></a> <span class="s2">"interaction"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML.__init__-195"><a href="#LineageHTML.__init__-195"><span class="linenos">195</span></a> <span class="s2">"dragNodes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-196"><a href="#LineageHTML.__init__-196"><span class="linenos">196</span></a> <span class="s2">"selectable"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-197"><a href="#LineageHTML.__init__-197"><span class="linenos">197</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML.__init__-198"><a href="#LineageHTML.__init__-198"><span class="linenos">198</span></a> <span class="s2">"physics"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML.__init__-199"><a href="#LineageHTML.__init__-199"><span class="linenos">199</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-200"><a href="#LineageHTML.__init__-200"><span class="linenos">200</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML.__init__-201"><a href="#LineageHTML.__init__-201"><span class="linenos">201</span></a> <span class="s2">"edges"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML.__init__-202"><a href="#LineageHTML.__init__-202"><span class="linenos">202</span></a> <span class="s2">"arrows"</span><span class="p">:</span> <span class="s2">"to"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-203"><a href="#LineageHTML.__init__-203"><span class="linenos">203</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML.__init__-204"><a href="#LineageHTML.__init__-204"><span class="linenos">204</span></a> <span class="s2">"nodes"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML.__init__-205"><a href="#LineageHTML.__init__-205"><span class="linenos">205</span></a> <span class="s2">"font"</span><span class="p">:</span> <span class="s2">"20px monaco"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-206"><a href="#LineageHTML.__init__-206"><span class="linenos">206</span></a> <span class="s2">"shape"</span><span class="p">:</span> <span class="s2">"box"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-207"><a href="#LineageHTML.__init__-207"><span class="linenos">207</span></a> <span class="s2">"widthConstraint"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML.__init__-208"><a href="#LineageHTML.__init__-208"><span class="linenos">208</span></a> <span class="s2">"maximum"</span><span class="p">:</span> <span class="mi">300</span><span class="p">,</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="LineageHTML.__init__-191"><a href="#LineageHTML.__init__-191"><span class="linenos">191</span></a> <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span>
|
||||
</span><span id="LineageHTML.__init__-192"><a href="#LineageHTML.__init__-192"><span class="linenos">192</span></a> <span class="bp">self</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-193"><a href="#LineageHTML.__init__-193"><span class="linenos">193</span></a> <span class="n">node</span><span class="p">:</span> <span class="n">Node</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-194"><a href="#LineageHTML.__init__-194"><span class="linenos">194</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-195"><a href="#LineageHTML.__init__-195"><span class="linenos">195</span></a> <span class="n">imports</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="LineageHTML.__init__-196"><a href="#LineageHTML.__init__-196"><span class="linenos">196</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-197"><a href="#LineageHTML.__init__-197"><span class="linenos">197</span></a> <span class="p">):</span>
|
||||
</span><span id="LineageHTML.__init__-198"><a href="#LineageHTML.__init__-198"><span class="linenos">198</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">node</span> <span class="o">=</span> <span class="n">node</span>
|
||||
</span><span id="LineageHTML.__init__-199"><a href="#LineageHTML.__init__-199"><span class="linenos">199</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">imports</span> <span class="o">=</span> <span class="n">imports</span>
|
||||
</span><span id="LineageHTML.__init__-200"><a href="#LineageHTML.__init__-200"><span class="linenos">200</span></a>
|
||||
</span><span id="LineageHTML.__init__-201"><a href="#LineageHTML.__init__-201"><span class="linenos">201</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">options</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML.__init__-202"><a href="#LineageHTML.__init__-202"><span class="linenos">202</span></a> <span class="s2">"height"</span><span class="p">:</span> <span class="s2">"500px"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-203"><a href="#LineageHTML.__init__-203"><span class="linenos">203</span></a> <span class="s2">"width"</span><span class="p">:</span> <span class="s2">"100%"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-204"><a href="#LineageHTML.__init__-204"><span class="linenos">204</span></a> <span class="s2">"layout"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML.__init__-205"><a href="#LineageHTML.__init__-205"><span class="linenos">205</span></a> <span class="s2">"hierarchical"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML.__init__-206"><a href="#LineageHTML.__init__-206"><span class="linenos">206</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-207"><a href="#LineageHTML.__init__-207"><span class="linenos">207</span></a> <span class="s2">"nodeSpacing"</span><span class="p">:</span> <span class="mi">200</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-208"><a href="#LineageHTML.__init__-208"><span class="linenos">208</span></a> <span class="s2">"sortMethod"</span><span class="p">:</span> <span class="s2">"directed"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-209"><a href="#LineageHTML.__init__-209"><span class="linenos">209</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML.__init__-210"><a href="#LineageHTML.__init__-210"><span class="linenos">210</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML.__init__-211"><a href="#LineageHTML.__init__-211"><span class="linenos">211</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-212"><a href="#LineageHTML.__init__-212"><span class="linenos">212</span></a> <span class="p">}</span>
|
||||
</span><span id="LineageHTML.__init__-213"><a href="#LineageHTML.__init__-213"><span class="linenos">213</span></a>
|
||||
</span><span id="LineageHTML.__init__-214"><a href="#LineageHTML.__init__-214"><span class="linenos">214</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="LineageHTML.__init__-215"><a href="#LineageHTML.__init__-215"><span class="linenos">215</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">edges</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="LineageHTML.__init__-216"><a href="#LineageHTML.__init__-216"><span class="linenos">216</span></a>
|
||||
</span><span id="LineageHTML.__init__-217"><a href="#LineageHTML.__init__-217"><span class="linenos">217</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">walk</span><span class="p">():</span>
|
||||
</span><span id="LineageHTML.__init__-218"><a href="#LineageHTML.__init__-218"><span class="linenos">218</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</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">Table</span><span class="p">):</span>
|
||||
</span><span id="LineageHTML.__init__-219"><a href="#LineageHTML.__init__-219"><span class="linenos">219</span></a> <span class="n">label</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"FROM </span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="LineageHTML.__init__-220"><a href="#LineageHTML.__init__-220"><span class="linenos">220</span></a> <span class="n">title</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"<pre>SELECT </span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> FROM </span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="si">}</span><span class="s2"></pre>"</span>
|
||||
</span><span id="LineageHTML.__init__-221"><a href="#LineageHTML.__init__-221"><span class="linenos">221</span></a> <span class="n">group</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
</span><span id="LineageHTML.__init__-222"><a href="#LineageHTML.__init__-222"><span class="linenos">222</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="LineageHTML.__init__-223"><a href="#LineageHTML.__init__-223"><span class="linenos">223</span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">pretty</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML.__init__-224"><a href="#LineageHTML.__init__-224"><span class="linenos">224</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span>
|
||||
</span><span id="LineageHTML.__init__-225"><a href="#LineageHTML.__init__-225"><span class="linenos">225</span></a> <span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Tag</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">n</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"<b>"</span><span class="p">,</span> <span class="n">postfix</span><span class="o">=</span><span class="s2">"</b>"</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML.__init__-226"><a href="#LineageHTML.__init__-226"><span class="linenos">226</span></a> <span class="k">if</span> <span class="n">n</span> <span class="ow">is</span> <span class="n">node</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="LineageHTML.__init__-227"><a href="#LineageHTML.__init__-227"><span class="linenos">227</span></a> <span class="k">else</span> <span class="n">n</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-228"><a href="#LineageHTML.__init__-228"><span class="linenos">228</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-229"><a href="#LineageHTML.__init__-229"><span class="linenos">229</span></a> <span class="p">)</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">pretty</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML.__init__-230"><a href="#LineageHTML.__init__-230"><span class="linenos">230</span></a> <span class="n">title</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"<pre></span><span class="si">{</span><span class="n">source</span><span class="si">}</span><span class="s2"></pre>"</span>
|
||||
</span><span id="LineageHTML.__init__-231"><a href="#LineageHTML.__init__-231"><span class="linenos">231</span></a> <span class="n">group</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
</span><span id="LineageHTML.__init__-232"><a href="#LineageHTML.__init__-232"><span class="linenos">232</span></a>
|
||||
</span><span id="LineageHTML.__init__-233"><a href="#LineageHTML.__init__-233"><span class="linenos">233</span></a> <span class="n">node_id</span> <span class="o">=</span> <span class="nb">id</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML.__init__-234"><a href="#LineageHTML.__init__-234"><span class="linenos">234</span></a>
|
||||
</span><span id="LineageHTML.__init__-235"><a href="#LineageHTML.__init__-235"><span class="linenos">235</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">[</span><span class="n">node_id</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML.__init__-236"><a href="#LineageHTML.__init__-236"><span class="linenos">236</span></a> <span class="s2">"id"</span><span class="p">:</span> <span class="n">node_id</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-237"><a href="#LineageHTML.__init__-237"><span class="linenos">237</span></a> <span class="s2">"label"</span><span class="p">:</span> <span class="n">label</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-238"><a href="#LineageHTML.__init__-238"><span class="linenos">238</span></a> <span class="s2">"title"</span><span class="p">:</span> <span class="n">title</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-239"><a href="#LineageHTML.__init__-239"><span class="linenos">239</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="n">group</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-240"><a href="#LineageHTML.__init__-240"><span class="linenos">240</span></a> <span class="p">}</span>
|
||||
</span><span id="LineageHTML.__init__-241"><a href="#LineageHTML.__init__-241"><span class="linenos">241</span></a>
|
||||
</span><span id="LineageHTML.__init__-242"><a href="#LineageHTML.__init__-242"><span class="linenos">242</span></a> <span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="p">:</span>
|
||||
</span><span id="LineageHTML.__init__-243"><a href="#LineageHTML.__init__-243"><span class="linenos">243</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">edges</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s2">"from"</span><span class="p">:</span> <span class="n">node_id</span><span class="p">,</span> <span class="s2">"to"</span><span class="p">:</span> <span class="nb">id</span><span class="p">(</span><span class="n">d</span><span class="p">)})</span>
|
||||
</span><span id="LineageHTML.__init__-211"><a href="#LineageHTML.__init__-211"><span class="linenos">211</span></a> <span class="s2">"interaction"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML.__init__-212"><a href="#LineageHTML.__init__-212"><span class="linenos">212</span></a> <span class="s2">"dragNodes"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-213"><a href="#LineageHTML.__init__-213"><span class="linenos">213</span></a> <span class="s2">"selectable"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-214"><a href="#LineageHTML.__init__-214"><span class="linenos">214</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML.__init__-215"><a href="#LineageHTML.__init__-215"><span class="linenos">215</span></a> <span class="s2">"physics"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML.__init__-216"><a href="#LineageHTML.__init__-216"><span class="linenos">216</span></a> <span class="s2">"enabled"</span><span class="p">:</span> <span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-217"><a href="#LineageHTML.__init__-217"><span class="linenos">217</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML.__init__-218"><a href="#LineageHTML.__init__-218"><span class="linenos">218</span></a> <span class="s2">"edges"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML.__init__-219"><a href="#LineageHTML.__init__-219"><span class="linenos">219</span></a> <span class="s2">"arrows"</span><span class="p">:</span> <span class="s2">"to"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-220"><a href="#LineageHTML.__init__-220"><span class="linenos">220</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML.__init__-221"><a href="#LineageHTML.__init__-221"><span class="linenos">221</span></a> <span class="s2">"nodes"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML.__init__-222"><a href="#LineageHTML.__init__-222"><span class="linenos">222</span></a> <span class="s2">"font"</span><span class="p">:</span> <span class="s2">"20px monaco"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-223"><a href="#LineageHTML.__init__-223"><span class="linenos">223</span></a> <span class="s2">"shape"</span><span class="p">:</span> <span class="s2">"box"</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-224"><a href="#LineageHTML.__init__-224"><span class="linenos">224</span></a> <span class="s2">"widthConstraint"</span><span class="p">:</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML.__init__-225"><a href="#LineageHTML.__init__-225"><span class="linenos">225</span></a> <span class="s2">"maximum"</span><span class="p">:</span> <span class="mi">300</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-226"><a href="#LineageHTML.__init__-226"><span class="linenos">226</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML.__init__-227"><a href="#LineageHTML.__init__-227"><span class="linenos">227</span></a> <span class="p">},</span>
|
||||
</span><span id="LineageHTML.__init__-228"><a href="#LineageHTML.__init__-228"><span class="linenos">228</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-229"><a href="#LineageHTML.__init__-229"><span class="linenos">229</span></a> <span class="p">}</span>
|
||||
</span><span id="LineageHTML.__init__-230"><a href="#LineageHTML.__init__-230"><span class="linenos">230</span></a>
|
||||
</span><span id="LineageHTML.__init__-231"><a href="#LineageHTML.__init__-231"><span class="linenos">231</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span> <span class="o">=</span> <span class="p">{}</span>
|
||||
</span><span id="LineageHTML.__init__-232"><a href="#LineageHTML.__init__-232"><span class="linenos">232</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">edges</span> <span class="o">=</span> <span class="p">[]</span>
|
||||
</span><span id="LineageHTML.__init__-233"><a href="#LineageHTML.__init__-233"><span class="linenos">233</span></a>
|
||||
</span><span id="LineageHTML.__init__-234"><a href="#LineageHTML.__init__-234"><span class="linenos">234</span></a> <span class="k">for</span> <span class="n">node</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">walk</span><span class="p">():</span>
|
||||
</span><span id="LineageHTML.__init__-235"><a href="#LineageHTML.__init__-235"><span class="linenos">235</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</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">Table</span><span class="p">):</span>
|
||||
</span><span id="LineageHTML.__init__-236"><a href="#LineageHTML.__init__-236"><span class="linenos">236</span></a> <span class="n">label</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"FROM </span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="si">}</span><span class="s2">"</span>
|
||||
</span><span id="LineageHTML.__init__-237"><a href="#LineageHTML.__init__-237"><span class="linenos">237</span></a> <span class="n">title</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"<pre>SELECT </span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2"> FROM </span><span class="si">{</span><span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="si">}</span><span class="s2"></pre>"</span>
|
||||
</span><span id="LineageHTML.__init__-238"><a href="#LineageHTML.__init__-238"><span class="linenos">238</span></a> <span class="n">group</span> <span class="o">=</span> <span class="mi">1</span>
|
||||
</span><span id="LineageHTML.__init__-239"><a href="#LineageHTML.__init__-239"><span class="linenos">239</span></a> <span class="k">else</span><span class="p">:</span>
|
||||
</span><span id="LineageHTML.__init__-240"><a href="#LineageHTML.__init__-240"><span class="linenos">240</span></a> <span class="n">label</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">expression</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">pretty</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML.__init__-241"><a href="#LineageHTML.__init__-241"><span class="linenos">241</span></a> <span class="n">source</span> <span class="o">=</span> <span class="n">node</span><span class="o">.</span><span class="n">source</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span>
|
||||
</span><span id="LineageHTML.__init__-242"><a href="#LineageHTML.__init__-242"><span class="linenos">242</span></a> <span class="k">lambda</span> <span class="n">n</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Tag</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">n</span><span class="p">,</span> <span class="n">prefix</span><span class="o">=</span><span class="s2">"<b>"</span><span class="p">,</span> <span class="n">postfix</span><span class="o">=</span><span class="s2">"</b>"</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML.__init__-243"><a href="#LineageHTML.__init__-243"><span class="linenos">243</span></a> <span class="k">if</span> <span class="n">n</span> <span class="ow">is</span> <span class="n">node</span><span class="o">.</span><span class="n">expression</span>
|
||||
</span><span id="LineageHTML.__init__-244"><a href="#LineageHTML.__init__-244"><span class="linenos">244</span></a> <span class="k">else</span> <span class="n">n</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-245"><a href="#LineageHTML.__init__-245"><span class="linenos">245</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-246"><a href="#LineageHTML.__init__-246"><span class="linenos">246</span></a> <span class="p">)</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">pretty</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML.__init__-247"><a href="#LineageHTML.__init__-247"><span class="linenos">247</span></a> <span class="n">title</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">"<pre></span><span class="si">{</span><span class="n">source</span><span class="si">}</span><span class="s2"></pre>"</span>
|
||||
</span><span id="LineageHTML.__init__-248"><a href="#LineageHTML.__init__-248"><span class="linenos">248</span></a> <span class="n">group</span> <span class="o">=</span> <span class="mi">0</span>
|
||||
</span><span id="LineageHTML.__init__-249"><a href="#LineageHTML.__init__-249"><span class="linenos">249</span></a>
|
||||
</span><span id="LineageHTML.__init__-250"><a href="#LineageHTML.__init__-250"><span class="linenos">250</span></a> <span class="n">node_id</span> <span class="o">=</span> <span class="nb">id</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
|
||||
</span><span id="LineageHTML.__init__-251"><a href="#LineageHTML.__init__-251"><span class="linenos">251</span></a>
|
||||
</span><span id="LineageHTML.__init__-252"><a href="#LineageHTML.__init__-252"><span class="linenos">252</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">nodes</span><span class="p">[</span><span class="n">node_id</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
|
||||
</span><span id="LineageHTML.__init__-253"><a href="#LineageHTML.__init__-253"><span class="linenos">253</span></a> <span class="s2">"id"</span><span class="p">:</span> <span class="n">node_id</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-254"><a href="#LineageHTML.__init__-254"><span class="linenos">254</span></a> <span class="s2">"label"</span><span class="p">:</span> <span class="n">label</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-255"><a href="#LineageHTML.__init__-255"><span class="linenos">255</span></a> <span class="s2">"title"</span><span class="p">:</span> <span class="n">title</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-256"><a href="#LineageHTML.__init__-256"><span class="linenos">256</span></a> <span class="s2">"group"</span><span class="p">:</span> <span class="n">group</span><span class="p">,</span>
|
||||
</span><span id="LineageHTML.__init__-257"><a href="#LineageHTML.__init__-257"><span class="linenos">257</span></a> <span class="p">}</span>
|
||||
</span><span id="LineageHTML.__init__-258"><a href="#LineageHTML.__init__-258"><span class="linenos">258</span></a>
|
||||
</span><span id="LineageHTML.__init__-259"><a href="#LineageHTML.__init__-259"><span class="linenos">259</span></a> <span class="k">for</span> <span class="n">d</span> <span class="ow">in</span> <span class="n">node</span><span class="o">.</span><span class="n">downstream</span><span class="p">:</span>
|
||||
</span><span id="LineageHTML.__init__-260"><a href="#LineageHTML.__init__-260"><span class="linenos">260</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">edges</span><span class="o">.</span><span class="n">append</span><span class="p">({</span><span class="s2">"from"</span><span class="p">:</span> <span class="n">node_id</span><span class="p">,</span> <span class="s2">"to"</span><span class="p">:</span> <span class="nb">id</span><span class="p">(</span><span class="n">d</span><span class="p">)})</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -145,41 +145,45 @@
|
|||
</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a> <span class="n">_replace_int_predicate</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">)</span>
|
||||
</span><span id="L-70"><a href="#L-70"><span class="linenos"> 70</span></a> <span class="n">_replace_int_predicate</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">)</span>
|
||||
</span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a>
|
||||
</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="k">elif</span> <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">Where</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">)):</span>
|
||||
</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="n">_replace_int_predicate</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span>
|
||||
</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a>
|
||||
</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a>
|
||||
</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a>
|
||||
</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a><span class="k">def</span> <span class="nf">remove_ascending_order</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-79"><a href="#L-79"><span class="linenos"> 79</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">Ordered</span><span class="p">)</span> <span class="ow">and</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">"desc"</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
|
||||
</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a> <span class="c1"># Convert ORDER BY a ASC to ORDER BY a</span>
|
||||
</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"desc"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a>
|
||||
</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a>
|
||||
</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a>
|
||||
</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a><span class="k">def</span> <span class="nf">_coerce_date</span><span class="p">(</span><span class="n">a</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">b</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-87"><a href="#L-87"><span class="linenos"> 87</span></a> <span class="k">for</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="ow">in</span> <span class="n">itertools</span><span class="o">.</span><span class="n">permutations</span><span class="p">([</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">]):</span>
|
||||
</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a> <span class="k">if</span> <span class="p">(</span>
|
||||
</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a> <span class="n">a</span><span class="o">.</span><span class="n">type</span>
|
||||
</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a> <span class="ow">and</span> <span class="n">a</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span>
|
||||
</span><span id="L-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="ow">and</span> <span class="n">b</span><span class="o">.</span><span class="n">type</span>
|
||||
</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="ow">and</span> <span class="n">b</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">this</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">)</span>
|
||||
</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="p">):</span>
|
||||
</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a> <span class="n">_replace_cast</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">)</span>
|
||||
</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a>
|
||||
</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a>
|
||||
</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a><span class="k">def</span> <span class="nf">_replace_cast</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="n">to</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="n">node</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">cast</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">to</span><span class="o">=</span><span class="n">to</span><span class="p">))</span>
|
||||
</span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="k">elif</span> <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">Where</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">))</span> <span class="ow">or</span> <span class="p">(</span>
|
||||
</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="c1"># We can't replace num in CASE x WHEN num ..., because it's not the full predicate</span>
|
||||
</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</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">If</span><span class="p">)</span>
|
||||
</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">this</span><span class="p">)</span>
|
||||
</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> <span class="p">):</span>
|
||||
</span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="n">_replace_int_predicate</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span>
|
||||
</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a>
|
||||
</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</span></a>
|
||||
</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a>
|
||||
</span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a><span class="k">def</span> <span class="nf">remove_ascending_order</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-83"><a href="#L-83"><span class="linenos"> 83</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">Ordered</span><span class="p">)</span> <span class="ow">and</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">"desc"</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
|
||||
</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a> <span class="c1"># Convert ORDER BY a ASC to ORDER BY a</span>
|
||||
</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"desc"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</span></a>
|
||||
</span><span id="L-87"><a href="#L-87"><span class="linenos"> 87</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-88"><a href="#L-88"><span class="linenos"> 88</span></a>
|
||||
</span><span id="L-89"><a href="#L-89"><span class="linenos"> 89</span></a>
|
||||
</span><span id="L-90"><a href="#L-90"><span class="linenos"> 90</span></a><span class="k">def</span> <span class="nf">_coerce_date</span><span class="p">(</span><span class="n">a</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">b</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-91"><a href="#L-91"><span class="linenos"> 91</span></a> <span class="k">for</span> <span class="n">a</span><span class="p">,</span> <span class="n">b</span> <span class="ow">in</span> <span class="n">itertools</span><span class="o">.</span><span class="n">permutations</span><span class="p">([</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">]):</span>
|
||||
</span><span id="L-92"><a href="#L-92"><span class="linenos"> 92</span></a> <span class="k">if</span> <span class="p">(</span>
|
||||
</span><span id="L-93"><a href="#L-93"><span class="linenos"> 93</span></a> <span class="n">a</span><span class="o">.</span><span class="n">type</span>
|
||||
</span><span id="L-94"><a href="#L-94"><span class="linenos"> 94</span></a> <span class="ow">and</span> <span class="n">a</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">this</span> <span class="o">==</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span>
|
||||
</span><span id="L-95"><a href="#L-95"><span class="linenos"> 95</span></a> <span class="ow">and</span> <span class="n">b</span><span class="o">.</span><span class="n">type</span>
|
||||
</span><span id="L-96"><a href="#L-96"><span class="linenos"> 96</span></a> <span class="ow">and</span> <span class="n">b</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">this</span> <span class="ow">not</span> <span class="ow">in</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">INTERVAL</span><span class="p">)</span>
|
||||
</span><span id="L-97"><a href="#L-97"><span class="linenos"> 97</span></a> <span class="p">):</span>
|
||||
</span><span id="L-98"><a href="#L-98"><span class="linenos"> 98</span></a> <span class="n">_replace_cast</span><span class="p">(</span><span class="n">b</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATE</span><span class="p">)</span>
|
||||
</span><span id="L-99"><a href="#L-99"><span class="linenos"> 99</span></a>
|
||||
</span><span id="L-100"><a href="#L-100"><span class="linenos">100</span></a>
|
||||
</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a><span class="k">def</span> <span class="nf">_replace_int_predicate</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="kc">None</span><span class="p">:</span>
|
||||
</span><span id="L-102"><a href="#L-102"><span class="linenos">102</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">Coalesce</span><span class="p">):</span>
|
||||
</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a> <span class="k">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">iter_expressions</span><span class="p">():</span>
|
||||
</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a> <span class="n">_replace_int_predicate</span><span class="p">(</span><span class="n">child</span><span class="p">)</span>
|
||||
</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a> <span class="k">elif</span> <span class="n">expression</span><span class="o">.</span><span class="n">type</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">this</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">INTEGER_TYPES</span><span class="p">:</span>
|
||||
</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a> <span class="n">expression</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">NEQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">0</span><span class="p">)))</span>
|
||||
</span><span id="L-101"><a href="#L-101"><span class="linenos">101</span></a><span class="k">def</span> <span class="nf">_replace_cast</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="n">to</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="p">)</span> <span class="o">-></span> <span class="kc">None</span><span class="p">:</span>
|
||||
</span><span id="L-102"><a href="#L-102"><span class="linenos">102</span></a> <span class="n">node</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">cast</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">to</span><span class="o">=</span><span class="n">to</span><span class="p">))</span>
|
||||
</span><span id="L-103"><a href="#L-103"><span class="linenos">103</span></a>
|
||||
</span><span id="L-104"><a href="#L-104"><span class="linenos">104</span></a>
|
||||
</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a><span class="k">def</span> <span class="nf">_replace_int_predicate</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="kc">None</span><span class="p">:</span>
|
||||
</span><span id="L-106"><a href="#L-106"><span class="linenos">106</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">Coalesce</span><span class="p">):</span>
|
||||
</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a> <span class="k">for</span> <span class="n">_</span><span class="p">,</span> <span class="n">child</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">iter_expressions</span><span class="p">():</span>
|
||||
</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a> <span class="n">_replace_int_predicate</span><span class="p">(</span><span class="n">child</span><span class="p">)</span>
|
||||
</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a> <span class="k">elif</span> <span class="n">expression</span><span class="o">.</span><span class="n">type</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">type</span><span class="o">.</span><span class="n">this</span> <span class="ow">in</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">INTEGER_TYPES</span><span class="p">:</span>
|
||||
</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a> <span class="n">expression</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">NEQ</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">(),</span> <span class="n">expression</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mi">0</span><span class="p">)))</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -345,10 +349,14 @@ conversions rely on type inference.</p>
|
|||
</span><span id="ensure_bool_predicates-70"><a href="#ensure_bool_predicates-70"><span class="linenos">70</span></a> <span class="n">_replace_int_predicate</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">left</span><span class="p">)</span>
|
||||
</span><span id="ensure_bool_predicates-71"><a href="#ensure_bool_predicates-71"><span class="linenos">71</span></a> <span class="n">_replace_int_predicate</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">right</span><span class="p">)</span>
|
||||
</span><span id="ensure_bool_predicates-72"><a href="#ensure_bool_predicates-72"><span class="linenos">72</span></a>
|
||||
</span><span id="ensure_bool_predicates-73"><a href="#ensure_bool_predicates-73"><span class="linenos">73</span></a> <span class="k">elif</span> <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">Where</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">If</span><span class="p">)):</span>
|
||||
</span><span id="ensure_bool_predicates-74"><a href="#ensure_bool_predicates-74"><span class="linenos">74</span></a> <span class="n">_replace_int_predicate</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span>
|
||||
</span><span id="ensure_bool_predicates-75"><a href="#ensure_bool_predicates-75"><span class="linenos">75</span></a>
|
||||
</span><span id="ensure_bool_predicates-76"><a href="#ensure_bool_predicates-76"><span class="linenos">76</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="ensure_bool_predicates-73"><a href="#ensure_bool_predicates-73"><span class="linenos">73</span></a> <span class="k">elif</span> <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">Where</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Having</span><span class="p">))</span> <span class="ow">or</span> <span class="p">(</span>
|
||||
</span><span id="ensure_bool_predicates-74"><a href="#ensure_bool_predicates-74"><span class="linenos">74</span></a> <span class="c1"># We can't replace num in CASE x WHEN num ..., because it's not the full predicate</span>
|
||||
</span><span id="ensure_bool_predicates-75"><a href="#ensure_bool_predicates-75"><span class="linenos">75</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">If</span><span class="p">)</span>
|
||||
</span><span id="ensure_bool_predicates-76"><a href="#ensure_bool_predicates-76"><span class="linenos">76</span></a> <span class="ow">and</span> <span class="ow">not</span> <span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Case</span><span class="p">)</span> <span class="ow">and</span> <span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="o">.</span><span class="n">this</span><span class="p">)</span>
|
||||
</span><span id="ensure_bool_predicates-77"><a href="#ensure_bool_predicates-77"><span class="linenos">77</span></a> <span class="p">):</span>
|
||||
</span><span id="ensure_bool_predicates-78"><a href="#ensure_bool_predicates-78"><span class="linenos">78</span></a> <span class="n">_replace_int_predicate</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">)</span>
|
||||
</span><span id="ensure_bool_predicates-79"><a href="#ensure_bool_predicates-79"><span class="linenos">79</span></a>
|
||||
</span><span id="ensure_bool_predicates-80"><a href="#ensure_bool_predicates-80"><span class="linenos">80</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -366,12 +374,12 @@ conversions rely on type inference.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#remove_ascending_order"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="remove_ascending_order-79"><a href="#remove_ascending_order-79"><span class="linenos">79</span></a><span class="k">def</span> <span class="nf">remove_ascending_order</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_ascending_order-80"><a href="#remove_ascending_order-80"><span class="linenos">80</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">Ordered</span><span class="p">)</span> <span class="ow">and</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">"desc"</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
|
||||
</span><span id="remove_ascending_order-81"><a href="#remove_ascending_order-81"><span class="linenos">81</span></a> <span class="c1"># Convert ORDER BY a ASC to ORDER BY a</span>
|
||||
</span><span id="remove_ascending_order-82"><a href="#remove_ascending_order-82"><span class="linenos">82</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"desc"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
</span><span id="remove_ascending_order-83"><a href="#remove_ascending_order-83"><span class="linenos">83</span></a>
|
||||
</span><span id="remove_ascending_order-84"><a href="#remove_ascending_order-84"><span class="linenos">84</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="remove_ascending_order-83"><a href="#remove_ascending_order-83"><span class="linenos">83</span></a><span class="k">def</span> <span class="nf">remove_ascending_order</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_ascending_order-84"><a href="#remove_ascending_order-84"><span class="linenos">84</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">Ordered</span><span class="p">)</span> <span class="ow">and</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">"desc"</span><span class="p">)</span> <span class="ow">is</span> <span class="kc">False</span><span class="p">:</span>
|
||||
</span><span id="remove_ascending_order-85"><a href="#remove_ascending_order-85"><span class="linenos">85</span></a> <span class="c1"># Convert ORDER BY a ASC to ORDER BY a</span>
|
||||
</span><span id="remove_ascending_order-86"><a href="#remove_ascending_order-86"><span class="linenos">86</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">"desc"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
</span><span id="remove_ascending_order-87"><a href="#remove_ascending_order-87"><span class="linenos">87</span></a>
|
||||
</span><span id="remove_ascending_order-88"><a href="#remove_ascending_order-88"><span class="linenos">88</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
|
|
@ -568,7 +568,7 @@ queries if it would result in multiple table selects in a single query:</p>
|
|||
<div class="attr variable">
|
||||
<span class="name">UNMERGABLE_ARGS</span> =
|
||||
<input id="UNMERGABLE_ARGS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||
<label class="view-value-button pdoc-button" for="UNMERGABLE_ARGS-view-value"></label><span class="default_value">{'locks', 'distribute', 'settings', 'having', 'format', 'pivots', 'match', 'qualify', 'distinct', 'windows', 'with', 'connect', 'group', 'into', 'kind', 'cluster', 'sort', 'laterals', 'limit', 'sample', 'offset'}</span>
|
||||
<label class="view-value-button pdoc-button" for="UNMERGABLE_ARGS-view-value"></label><span class="default_value">{'qualify', 'pivots', 'sample', 'locks', 'windows', 'distribute', 'laterals', 'sort', 'match', 'kind', 'settings', 'having', 'connect', 'format', 'into', 'offset', 'limit', 'distinct', 'with', 'cluster', 'group'}</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -375,8 +375,8 @@
|
|||
</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collected</span><span class="p">:</span>
|
||||
</span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_collect</span><span class="p">()</span>
|
||||
</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a>
|
||||
</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a> <span class="k">def</span> <span class="nf">walk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="k">return</span> <span class="n">walk_in_scope</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">)</span>
|
||||
</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a> <span class="k">def</span> <span class="nf">walk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="L-141"><a href="#L-141"><span class="linenos">141</span></a> <span class="k">return</span> <span class="n">walk_in_scope</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
</span><span id="L-142"><a href="#L-142"><span class="linenos">142</span></a>
|
||||
</span><span id="L-143"><a href="#L-143"><span class="linenos">143</span></a> <span class="k">def</span> <span class="nf">find</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="L-144"><a href="#L-144"><span class="linenos">144</span></a> <span class="k">return</span> <span class="n">find_in_scope</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">)</span>
|
||||
|
@ -969,7 +969,7 @@
|
|||
</span><span id="L-731"><a href="#L-731"><span class="linenos">731</span></a> <span class="k">yield from</span> <span class="n">_traverse_scope</span><span class="p">(</span><span class="n">query_scope</span><span class="p">)</span>
|
||||
</span><span id="L-732"><a href="#L-732"><span class="linenos">732</span></a>
|
||||
</span><span id="L-733"><a href="#L-733"><span class="linenos">733</span></a>
|
||||
</span><span id="L-734"><a href="#L-734"><span class="linenos">734</span></a><span class="k">def</span> <span class="nf">walk_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="L-734"><a href="#L-734"><span class="linenos">734</span></a><span class="k">def</span> <span class="nf">walk_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="L-735"><a href="#L-735"><span class="linenos">735</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-736"><a href="#L-736"><span class="linenos">736</span></a><span class="sd"> Returns a generator object which visits all nodes in the syntrax tree, stopping at</span>
|
||||
</span><span id="L-737"><a href="#L-737"><span class="linenos">737</span></a><span class="sd"> nodes that start child scopes.</span>
|
||||
|
@ -978,76 +978,80 @@
|
|||
</span><span id="L-740"><a href="#L-740"><span class="linenos">740</span></a><span class="sd"> expression (exp.Expression):</span>
|
||||
</span><span id="L-741"><a href="#L-741"><span class="linenos">741</span></a><span class="sd"> bfs (bool): if set to True the BFS traversal order will be applied,</span>
|
||||
</span><span id="L-742"><a href="#L-742"><span class="linenos">742</span></a><span class="sd"> otherwise the DFS traversal will be used instead.</span>
|
||||
</span><span id="L-743"><a href="#L-743"><span class="linenos">743</span></a>
|
||||
</span><span id="L-744"><a href="#L-744"><span class="linenos">744</span></a><span class="sd"> Yields:</span>
|
||||
</span><span id="L-745"><a href="#L-745"><span class="linenos">745</span></a><span class="sd"> tuple[exp.Expression, Optional[exp.Expression], str]: node, parent, arg key</span>
|
||||
</span><span id="L-746"><a href="#L-746"><span class="linenos">746</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-747"><a href="#L-747"><span class="linenos">747</span></a> <span class="c1"># We'll use this variable to pass state into the dfs generator.</span>
|
||||
</span><span id="L-748"><a href="#L-748"><span class="linenos">748</span></a> <span class="c1"># Whenever we set it to True, we exclude a subtree from traversal.</span>
|
||||
</span><span id="L-749"><a href="#L-749"><span class="linenos">749</span></a> <span class="n">prune</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
</span><span id="L-750"><a href="#L-750"><span class="linenos">750</span></a>
|
||||
</span><span id="L-751"><a href="#L-751"><span class="linenos">751</span></a> <span class="k">for</span> <span class="n">node</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="n">prune</span><span class="p">):</span>
|
||||
</span><span id="L-752"><a href="#L-752"><span class="linenos">752</span></a> <span class="n">prune</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
</span><span id="L-753"><a href="#L-753"><span class="linenos">753</span></a>
|
||||
</span><span id="L-754"><a href="#L-754"><span class="linenos">754</span></a> <span class="k">yield</span> <span class="n">node</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</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 class="k">if</span> <span class="n">node</span> <span class="ow">is</span> <span class="n">expression</span><span class="p">:</span>
|
||||
</span><span id="L-757"><a href="#L-757"><span class="linenos">757</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-758"><a href="#L-758"><span class="linenos">758</span></a> <span class="k">if</span> <span class="p">(</span>
|
||||
</span><span id="L-759"><a href="#L-759"><span class="linenos">759</span></a> <span class="nb">isinstance</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">CTE</span><span class="p">)</span>
|
||||
</span><span id="L-760"><a href="#L-760"><span class="linenos">760</span></a> <span class="ow">or</span> <span class="p">(</span>
|
||||
</span><span id="L-761"><a href="#L-761"><span class="linenos">761</span></a> <span class="nb">isinstance</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">Subquery</span><span class="p">)</span>
|
||||
</span><span id="L-762"><a href="#L-762"><span class="linenos">762</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">))</span>
|
||||
</span><span id="L-763"><a href="#L-763"><span class="linenos">763</span></a> <span class="ow">and</span> <span class="n">_is_derived_table</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
|
||||
</span><span id="L-764"><a href="#L-764"><span class="linenos">764</span></a> <span class="p">)</span>
|
||||
</span><span id="L-765"><a href="#L-765"><span class="linenos">765</span></a> <span class="ow">or</span> <span class="nb">isinstance</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">UDTF</span><span class="p">)</span>
|
||||
</span><span id="L-766"><a href="#L-766"><span class="linenos">766</span></a> <span class="ow">or</span> <span class="nb">isinstance</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">Subqueryable</span><span class="p">)</span>
|
||||
</span><span id="L-767"><a href="#L-767"><span class="linenos">767</span></a> <span class="p">):</span>
|
||||
</span><span id="L-768"><a href="#L-768"><span class="linenos">768</span></a> <span class="n">prune</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</span><span id="L-769"><a href="#L-769"><span class="linenos">769</span></a>
|
||||
</span><span id="L-770"><a href="#L-770"><span class="linenos">770</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UDTF</span><span class="p">)):</span>
|
||||
</span><span id="L-771"><a href="#L-771"><span class="linenos">771</span></a> <span class="c1"># The following args are not actually in the inner scope, so we should visit them</span>
|
||||
</span><span id="L-772"><a href="#L-772"><span class="linenos">772</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="s2">"laterals"</span><span class="p">,</span> <span class="s2">"pivots"</span><span class="p">):</span>
|
||||
</span><span id="L-773"><a href="#L-773"><span class="linenos">773</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">node</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="n">key</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]:</span>
|
||||
</span><span id="L-774"><a href="#L-774"><span class="linenos">774</span></a> <span class="k">yield from</span> <span class="n">walk_in_scope</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">)</span>
|
||||
</span><span id="L-775"><a href="#L-775"><span class="linenos">775</span></a>
|
||||
</span><span id="L-776"><a href="#L-776"><span class="linenos">776</span></a>
|
||||
</span><span id="L-777"><a href="#L-777"><span class="linenos">777</span></a><span class="k">def</span> <span class="nf">find_all_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="L-778"><a href="#L-778"><span class="linenos">778</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-779"><a href="#L-779"><span class="linenos">779</span></a><span class="sd"> Returns a generator object which visits all nodes in this scope and only yields those that</span>
|
||||
</span><span id="L-780"><a href="#L-780"><span class="linenos">780</span></a><span class="sd"> match at least one of the specified expression types.</span>
|
||||
</span><span id="L-781"><a href="#L-781"><span class="linenos">781</span></a>
|
||||
</span><span id="L-782"><a href="#L-782"><span class="linenos">782</span></a><span class="sd"> This does NOT traverse into subscopes.</span>
|
||||
</span><span id="L-783"><a href="#L-783"><span class="linenos">783</span></a>
|
||||
</span><span id="L-784"><a href="#L-784"><span class="linenos">784</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="L-785"><a href="#L-785"><span class="linenos">785</span></a><span class="sd"> expression (exp.Expression):</span>
|
||||
</span><span id="L-786"><a href="#L-786"><span class="linenos">786</span></a><span class="sd"> expression_types (tuple[type]|type): the expression type(s) to match.</span>
|
||||
</span><span id="L-787"><a href="#L-787"><span class="linenos">787</span></a><span class="sd"> bfs (bool): True to use breadth-first search, False to use depth-first.</span>
|
||||
</span><span id="L-788"><a href="#L-788"><span class="linenos">788</span></a>
|
||||
</span><span id="L-789"><a href="#L-789"><span class="linenos">789</span></a><span class="sd"> Yields:</span>
|
||||
</span><span id="L-790"><a href="#L-790"><span class="linenos">790</span></a><span class="sd"> exp.Expression: nodes</span>
|
||||
</span><span id="L-791"><a href="#L-791"><span class="linenos">791</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-792"><a href="#L-792"><span class="linenos">792</span></a> <span class="k">for</span> <span class="n">expression</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span> <span class="ow">in</span> <span class="n">walk_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">):</span>
|
||||
</span><span id="L-793"><a href="#L-793"><span class="linenos">793</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="nb">tuple</span><span class="p">(</span><span class="n">ensure_collection</span><span class="p">(</span><span class="n">expression_types</span><span class="p">))):</span>
|
||||
</span><span id="L-794"><a href="#L-794"><span class="linenos">794</span></a> <span class="k">yield</span> <span class="n">expression</span>
|
||||
</span><span id="L-795"><a href="#L-795"><span class="linenos">795</span></a>
|
||||
</span><span id="L-796"><a href="#L-796"><span class="linenos">796</span></a>
|
||||
</span><span id="L-797"><a href="#L-797"><span class="linenos">797</span></a><span class="k">def</span> <span class="nf">find_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="L-798"><a href="#L-798"><span class="linenos">798</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-799"><a href="#L-799"><span class="linenos">799</span></a><span class="sd"> Returns the first node in this scope which matches at least one of the specified types.</span>
|
||||
</span><span id="L-743"><a href="#L-743"><span class="linenos">743</span></a><span class="sd"> prune ((node, parent, arg_key) -> bool): callable that returns True if</span>
|
||||
</span><span id="L-744"><a href="#L-744"><span class="linenos">744</span></a><span class="sd"> the generator should stop traversing this branch of the tree.</span>
|
||||
</span><span id="L-745"><a href="#L-745"><span class="linenos">745</span></a>
|
||||
</span><span id="L-746"><a href="#L-746"><span class="linenos">746</span></a><span class="sd"> Yields:</span>
|
||||
</span><span id="L-747"><a href="#L-747"><span class="linenos">747</span></a><span class="sd"> tuple[exp.Expression, Optional[exp.Expression], str]: node, parent, arg key</span>
|
||||
</span><span id="L-748"><a href="#L-748"><span class="linenos">748</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-749"><a href="#L-749"><span class="linenos">749</span></a> <span class="c1"># We'll use this variable to pass state into the dfs generator.</span>
|
||||
</span><span id="L-750"><a href="#L-750"><span class="linenos">750</span></a> <span class="c1"># Whenever we set it to True, we exclude a subtree from traversal.</span>
|
||||
</span><span id="L-751"><a href="#L-751"><span class="linenos">751</span></a> <span class="n">crossed_scope_boundary</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
</span><span id="L-752"><a href="#L-752"><span class="linenos">752</span></a>
|
||||
</span><span id="L-753"><a href="#L-753"><span class="linenos">753</span></a> <span class="k">for</span> <span class="n">node</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span>
|
||||
</span><span id="L-754"><a href="#L-754"><span class="linenos">754</span></a> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="k">lambda</span> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">crossed_scope_boundary</span> <span class="ow">or</span> <span class="p">(</span><span class="n">prune</span> <span class="ow">and</span> <span class="n">prune</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">))</span>
|
||||
</span><span id="L-755"><a href="#L-755"><span class="linenos">755</span></a> <span class="p">):</span>
|
||||
</span><span id="L-756"><a href="#L-756"><span class="linenos">756</span></a> <span class="n">crossed_scope_boundary</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
</span><span id="L-757"><a href="#L-757"><span class="linenos">757</span></a>
|
||||
</span><span id="L-758"><a href="#L-758"><span class="linenos">758</span></a> <span class="k">yield</span> <span class="n">node</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span>
|
||||
</span><span id="L-759"><a href="#L-759"><span class="linenos">759</span></a>
|
||||
</span><span id="L-760"><a href="#L-760"><span class="linenos">760</span></a> <span class="k">if</span> <span class="n">node</span> <span class="ow">is</span> <span class="n">expression</span><span class="p">:</span>
|
||||
</span><span id="L-761"><a href="#L-761"><span class="linenos">761</span></a> <span class="k">continue</span>
|
||||
</span><span id="L-762"><a href="#L-762"><span class="linenos">762</span></a> <span class="k">if</span> <span class="p">(</span>
|
||||
</span><span id="L-763"><a href="#L-763"><span class="linenos">763</span></a> <span class="nb">isinstance</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">CTE</span><span class="p">)</span>
|
||||
</span><span id="L-764"><a href="#L-764"><span class="linenos">764</span></a> <span class="ow">or</span> <span class="p">(</span>
|
||||
</span><span id="L-765"><a href="#L-765"><span class="linenos">765</span></a> <span class="nb">isinstance</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">Subquery</span><span class="p">)</span>
|
||||
</span><span id="L-766"><a href="#L-766"><span class="linenos">766</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">))</span>
|
||||
</span><span id="L-767"><a href="#L-767"><span class="linenos">767</span></a> <span class="ow">and</span> <span class="n">_is_derived_table</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
|
||||
</span><span id="L-768"><a href="#L-768"><span class="linenos">768</span></a> <span class="p">)</span>
|
||||
</span><span id="L-769"><a href="#L-769"><span class="linenos">769</span></a> <span class="ow">or</span> <span class="nb">isinstance</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">UDTF</span><span class="p">)</span>
|
||||
</span><span id="L-770"><a href="#L-770"><span class="linenos">770</span></a> <span class="ow">or</span> <span class="nb">isinstance</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">Subqueryable</span><span class="p">)</span>
|
||||
</span><span id="L-771"><a href="#L-771"><span class="linenos">771</span></a> <span class="p">):</span>
|
||||
</span><span id="L-772"><a href="#L-772"><span class="linenos">772</span></a> <span class="n">crossed_scope_boundary</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</span><span id="L-773"><a href="#L-773"><span class="linenos">773</span></a>
|
||||
</span><span id="L-774"><a href="#L-774"><span class="linenos">774</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UDTF</span><span class="p">)):</span>
|
||||
</span><span id="L-775"><a href="#L-775"><span class="linenos">775</span></a> <span class="c1"># The following args are not actually in the inner scope, so we should visit them</span>
|
||||
</span><span id="L-776"><a href="#L-776"><span class="linenos">776</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="s2">"laterals"</span><span class="p">,</span> <span class="s2">"pivots"</span><span class="p">):</span>
|
||||
</span><span id="L-777"><a href="#L-777"><span class="linenos">777</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">node</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="n">key</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]:</span>
|
||||
</span><span id="L-778"><a href="#L-778"><span class="linenos">778</span></a> <span class="k">yield from</span> <span class="n">walk_in_scope</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">)</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">find_all_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</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"> Returns a generator object which visits all nodes in this scope and only yields those that</span>
|
||||
</span><span id="L-784"><a href="#L-784"><span class="linenos">784</span></a><span class="sd"> match at least one of the specified expression types.</span>
|
||||
</span><span id="L-785"><a href="#L-785"><span class="linenos">785</span></a>
|
||||
</span><span id="L-786"><a href="#L-786"><span class="linenos">786</span></a><span class="sd"> This does NOT traverse into subscopes.</span>
|
||||
</span><span id="L-787"><a href="#L-787"><span class="linenos">787</span></a>
|
||||
</span><span id="L-788"><a href="#L-788"><span class="linenos">788</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="L-789"><a href="#L-789"><span class="linenos">789</span></a><span class="sd"> expression (exp.Expression):</span>
|
||||
</span><span id="L-790"><a href="#L-790"><span class="linenos">790</span></a><span class="sd"> expression_types (tuple[type]|type): the expression type(s) to match.</span>
|
||||
</span><span id="L-791"><a href="#L-791"><span class="linenos">791</span></a><span class="sd"> bfs (bool): True to use breadth-first search, False to use depth-first.</span>
|
||||
</span><span id="L-792"><a href="#L-792"><span class="linenos">792</span></a>
|
||||
</span><span id="L-793"><a href="#L-793"><span class="linenos">793</span></a><span class="sd"> Yields:</span>
|
||||
</span><span id="L-794"><a href="#L-794"><span class="linenos">794</span></a><span class="sd"> exp.Expression: nodes</span>
|
||||
</span><span id="L-795"><a href="#L-795"><span class="linenos">795</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-796"><a href="#L-796"><span class="linenos">796</span></a> <span class="k">for</span> <span class="n">expression</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span> <span class="ow">in</span> <span class="n">walk_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">):</span>
|
||||
</span><span id="L-797"><a href="#L-797"><span class="linenos">797</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="nb">tuple</span><span class="p">(</span><span class="n">ensure_collection</span><span class="p">(</span><span class="n">expression_types</span><span class="p">))):</span>
|
||||
</span><span id="L-798"><a href="#L-798"><span class="linenos">798</span></a> <span class="k">yield</span> <span class="n">expression</span>
|
||||
</span><span id="L-799"><a href="#L-799"><span class="linenos">799</span></a>
|
||||
</span><span id="L-800"><a href="#L-800"><span class="linenos">800</span></a>
|
||||
</span><span id="L-801"><a href="#L-801"><span class="linenos">801</span></a><span class="sd"> This does NOT traverse into subscopes.</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 class="sd"> Args:</span>
|
||||
</span><span id="L-804"><a href="#L-804"><span class="linenos">804</span></a><span class="sd"> expression (exp.Expression):</span>
|
||||
</span><span id="L-805"><a href="#L-805"><span class="linenos">805</span></a><span class="sd"> expression_types (tuple[type]|type): the expression type(s) to match.</span>
|
||||
</span><span id="L-806"><a href="#L-806"><span class="linenos">806</span></a><span class="sd"> bfs (bool): True to use breadth-first search, False to use depth-first.</span>
|
||||
</span><span id="L-807"><a href="#L-807"><span class="linenos">807</span></a>
|
||||
</span><span id="L-808"><a href="#L-808"><span class="linenos">808</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="L-809"><a href="#L-809"><span class="linenos">809</span></a><span class="sd"> exp.Expression: the node which matches the criteria or None if no node matching</span>
|
||||
</span><span id="L-810"><a href="#L-810"><span class="linenos">810</span></a><span class="sd"> the criteria was found.</span>
|
||||
</span><span id="L-811"><a href="#L-811"><span class="linenos">811</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-812"><a href="#L-812"><span class="linenos">812</span></a> <span class="k">return</span> <span class="nb">next</span><span class="p">(</span><span class="n">find_all_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">),</span> <span class="kc">None</span><span class="p">)</span>
|
||||
</span><span id="L-801"><a href="#L-801"><span class="linenos">801</span></a><span class="k">def</span> <span class="nf">find_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="L-802"><a href="#L-802"><span class="linenos">802</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-803"><a href="#L-803"><span class="linenos">803</span></a><span class="sd"> Returns the first node in this scope which matches at least one of the specified types.</span>
|
||||
</span><span id="L-804"><a href="#L-804"><span class="linenos">804</span></a>
|
||||
</span><span id="L-805"><a href="#L-805"><span class="linenos">805</span></a><span class="sd"> This does NOT traverse into subscopes.</span>
|
||||
</span><span id="L-806"><a href="#L-806"><span class="linenos">806</span></a>
|
||||
</span><span id="L-807"><a href="#L-807"><span class="linenos">807</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="L-808"><a href="#L-808"><span class="linenos">808</span></a><span class="sd"> expression (exp.Expression):</span>
|
||||
</span><span id="L-809"><a href="#L-809"><span class="linenos">809</span></a><span class="sd"> expression_types (tuple[type]|type): the expression type(s) to match.</span>
|
||||
</span><span id="L-810"><a href="#L-810"><span class="linenos">810</span></a><span class="sd"> bfs (bool): True to use breadth-first search, False to use depth-first.</span>
|
||||
</span><span id="L-811"><a href="#L-811"><span class="linenos">811</span></a>
|
||||
</span><span id="L-812"><a href="#L-812"><span class="linenos">812</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="L-813"><a href="#L-813"><span class="linenos">813</span></a><span class="sd"> exp.Expression: the node which matches the criteria or None if no node matching</span>
|
||||
</span><span id="L-814"><a href="#L-814"><span class="linenos">814</span></a><span class="sd"> the criteria was found.</span>
|
||||
</span><span id="L-815"><a href="#L-815"><span class="linenos">815</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-816"><a href="#L-816"><span class="linenos">816</span></a> <span class="k">return</span> <span class="nb">next</span><span class="p">(</span><span class="n">find_all_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">),</span> <span class="kc">None</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -1300,8 +1304,8 @@
|
|||
</span><span id="Scope-138"><a href="#Scope-138"><span class="linenos">138</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">_collected</span><span class="p">:</span>
|
||||
</span><span id="Scope-139"><a href="#Scope-139"><span class="linenos">139</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_collect</span><span class="p">()</span>
|
||||
</span><span id="Scope-140"><a href="#Scope-140"><span class="linenos">140</span></a>
|
||||
</span><span id="Scope-141"><a href="#Scope-141"><span class="linenos">141</span></a> <span class="k">def</span> <span class="nf">walk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="Scope-142"><a href="#Scope-142"><span class="linenos">142</span></a> <span class="k">return</span> <span class="n">walk_in_scope</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">)</span>
|
||||
</span><span id="Scope-141"><a href="#Scope-141"><span class="linenos">141</span></a> <span class="k">def</span> <span class="nf">walk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="Scope-142"><a href="#Scope-142"><span class="linenos">142</span></a> <span class="k">return</span> <span class="n">walk_in_scope</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
</span><span id="Scope-143"><a href="#Scope-143"><span class="linenos">143</span></a>
|
||||
</span><span id="Scope-144"><a href="#Scope-144"><span class="linenos">144</span></a> <span class="k">def</span> <span class="nf">find</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="o">*</span><span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="Scope-145"><a href="#Scope-145"><span class="linenos">145</span></a> <span class="k">return</span> <span class="n">find_in_scope</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">)</span>
|
||||
|
@ -1891,14 +1895,14 @@ a list of the left and right child scopes.</li>
|
|||
<div class="attr function">
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">walk</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">bfs</span><span class="o">=</span><span class="kc">True</span></span><span class="return-annotation">):</span></span>
|
||||
<span class="name">walk</span><span class="signature pdoc-code condensed">(<span class="param"><span class="bp">self</span>, </span><span class="param"><span class="n">bfs</span><span class="o">=</span><span class="kc">True</span>, </span><span class="param"><span class="n">prune</span><span class="o">=</span><span class="kc">None</span></span><span class="return-annotation">):</span></span>
|
||||
|
||||
<label class="view-source-button" for="Scope.walk-view-source"><span>View Source</span></label>
|
||||
|
||||
</div>
|
||||
<a class="headerlink" href="#Scope.walk"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.walk-141"><a href="#Scope.walk-141"><span class="linenos">141</span></a> <span class="k">def</span> <span class="nf">walk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="Scope.walk-142"><a href="#Scope.walk-142"><span class="linenos">142</span></a> <span class="k">return</span> <span class="n">walk_in_scope</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="Scope.walk-141"><a href="#Scope.walk-141"><span class="linenos">141</span></a> <span class="k">def</span> <span class="nf">walk</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="Scope.walk-142"><a href="#Scope.walk-142"><span class="linenos">142</span></a> <span class="k">return</span> <span class="n">walk_in_scope</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -2642,13 +2646,13 @@ incomplete properties which is confusing.</p>
|
|||
<div class="attr function">
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">walk_in_scope</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">expression</span>, </span><span class="param"><span class="n">bfs</span><span class="o">=</span><span class="kc">True</span></span><span class="return-annotation">):</span></span>
|
||||
<span class="name">walk_in_scope</span><span class="signature pdoc-code condensed">(<span class="param"><span class="n">expression</span>, </span><span class="param"><span class="n">bfs</span><span class="o">=</span><span class="kc">True</span>, </span><span class="param"><span class="n">prune</span><span class="o">=</span><span class="kc">None</span></span><span class="return-annotation">):</span></span>
|
||||
|
||||
<label class="view-source-button" for="walk_in_scope-view-source"><span>View Source</span></label>
|
||||
|
||||
</div>
|
||||
<a class="headerlink" href="#walk_in_scope"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="walk_in_scope-735"><a href="#walk_in_scope-735"><span class="linenos">735</span></a><span class="k">def</span> <span class="nf">walk_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="walk_in_scope-735"><a href="#walk_in_scope-735"><span class="linenos">735</span></a><span class="k">def</span> <span class="nf">walk_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
|
||||
</span><span id="walk_in_scope-736"><a href="#walk_in_scope-736"><span class="linenos">736</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="walk_in_scope-737"><a href="#walk_in_scope-737"><span class="linenos">737</span></a><span class="sd"> Returns a generator object which visits all nodes in the syntrax tree, stopping at</span>
|
||||
</span><span id="walk_in_scope-738"><a href="#walk_in_scope-738"><span class="linenos">738</span></a><span class="sd"> nodes that start child scopes.</span>
|
||||
|
@ -2657,38 +2661,42 @@ incomplete properties which is confusing.</p>
|
|||
</span><span id="walk_in_scope-741"><a href="#walk_in_scope-741"><span class="linenos">741</span></a><span class="sd"> expression (exp.Expression):</span>
|
||||
</span><span id="walk_in_scope-742"><a href="#walk_in_scope-742"><span class="linenos">742</span></a><span class="sd"> bfs (bool): if set to True the BFS traversal order will be applied,</span>
|
||||
</span><span id="walk_in_scope-743"><a href="#walk_in_scope-743"><span class="linenos">743</span></a><span class="sd"> otherwise the DFS traversal will be used instead.</span>
|
||||
</span><span id="walk_in_scope-744"><a href="#walk_in_scope-744"><span class="linenos">744</span></a>
|
||||
</span><span id="walk_in_scope-745"><a href="#walk_in_scope-745"><span class="linenos">745</span></a><span class="sd"> Yields:</span>
|
||||
</span><span id="walk_in_scope-746"><a href="#walk_in_scope-746"><span class="linenos">746</span></a><span class="sd"> tuple[exp.Expression, Optional[exp.Expression], str]: node, parent, arg key</span>
|
||||
</span><span id="walk_in_scope-747"><a href="#walk_in_scope-747"><span class="linenos">747</span></a><span class="sd"> """</span>
|
||||
</span><span id="walk_in_scope-748"><a href="#walk_in_scope-748"><span class="linenos">748</span></a> <span class="c1"># We'll use this variable to pass state into the dfs generator.</span>
|
||||
</span><span id="walk_in_scope-749"><a href="#walk_in_scope-749"><span class="linenos">749</span></a> <span class="c1"># Whenever we set it to True, we exclude a subtree from traversal.</span>
|
||||
</span><span id="walk_in_scope-750"><a href="#walk_in_scope-750"><span class="linenos">750</span></a> <span class="n">prune</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
</span><span id="walk_in_scope-751"><a href="#walk_in_scope-751"><span class="linenos">751</span></a>
|
||||
</span><span id="walk_in_scope-752"><a href="#walk_in_scope-752"><span class="linenos">752</span></a> <span class="k">for</span> <span class="n">node</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span><span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="n">prune</span><span class="p">):</span>
|
||||
</span><span id="walk_in_scope-753"><a href="#walk_in_scope-753"><span class="linenos">753</span></a> <span class="n">prune</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
</span><span id="walk_in_scope-754"><a href="#walk_in_scope-754"><span class="linenos">754</span></a>
|
||||
</span><span id="walk_in_scope-755"><a href="#walk_in_scope-755"><span class="linenos">755</span></a> <span class="k">yield</span> <span class="n">node</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span>
|
||||
</span><span id="walk_in_scope-756"><a href="#walk_in_scope-756"><span class="linenos">756</span></a>
|
||||
</span><span id="walk_in_scope-757"><a href="#walk_in_scope-757"><span class="linenos">757</span></a> <span class="k">if</span> <span class="n">node</span> <span class="ow">is</span> <span class="n">expression</span><span class="p">:</span>
|
||||
</span><span id="walk_in_scope-758"><a href="#walk_in_scope-758"><span class="linenos">758</span></a> <span class="k">continue</span>
|
||||
</span><span id="walk_in_scope-759"><a href="#walk_in_scope-759"><span class="linenos">759</span></a> <span class="k">if</span> <span class="p">(</span>
|
||||
</span><span id="walk_in_scope-760"><a href="#walk_in_scope-760"><span class="linenos">760</span></a> <span class="nb">isinstance</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">CTE</span><span class="p">)</span>
|
||||
</span><span id="walk_in_scope-761"><a href="#walk_in_scope-761"><span class="linenos">761</span></a> <span class="ow">or</span> <span class="p">(</span>
|
||||
</span><span id="walk_in_scope-762"><a href="#walk_in_scope-762"><span class="linenos">762</span></a> <span class="nb">isinstance</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">Subquery</span><span class="p">)</span>
|
||||
</span><span id="walk_in_scope-763"><a href="#walk_in_scope-763"><span class="linenos">763</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">))</span>
|
||||
</span><span id="walk_in_scope-764"><a href="#walk_in_scope-764"><span class="linenos">764</span></a> <span class="ow">and</span> <span class="n">_is_derived_table</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
|
||||
</span><span id="walk_in_scope-765"><a href="#walk_in_scope-765"><span class="linenos">765</span></a> <span class="p">)</span>
|
||||
</span><span id="walk_in_scope-766"><a href="#walk_in_scope-766"><span class="linenos">766</span></a> <span class="ow">or</span> <span class="nb">isinstance</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">UDTF</span><span class="p">)</span>
|
||||
</span><span id="walk_in_scope-767"><a href="#walk_in_scope-767"><span class="linenos">767</span></a> <span class="ow">or</span> <span class="nb">isinstance</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">Subqueryable</span><span class="p">)</span>
|
||||
</span><span id="walk_in_scope-768"><a href="#walk_in_scope-768"><span class="linenos">768</span></a> <span class="p">):</span>
|
||||
</span><span id="walk_in_scope-769"><a href="#walk_in_scope-769"><span class="linenos">769</span></a> <span class="n">prune</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</span><span id="walk_in_scope-770"><a href="#walk_in_scope-770"><span class="linenos">770</span></a>
|
||||
</span><span id="walk_in_scope-771"><a href="#walk_in_scope-771"><span class="linenos">771</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UDTF</span><span class="p">)):</span>
|
||||
</span><span id="walk_in_scope-772"><a href="#walk_in_scope-772"><span class="linenos">772</span></a> <span class="c1"># The following args are not actually in the inner scope, so we should visit them</span>
|
||||
</span><span id="walk_in_scope-773"><a href="#walk_in_scope-773"><span class="linenos">773</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="s2">"laterals"</span><span class="p">,</span> <span class="s2">"pivots"</span><span class="p">):</span>
|
||||
</span><span id="walk_in_scope-774"><a href="#walk_in_scope-774"><span class="linenos">774</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">node</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="n">key</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]:</span>
|
||||
</span><span id="walk_in_scope-775"><a href="#walk_in_scope-775"><span class="linenos">775</span></a> <span class="k">yield from</span> <span class="n">walk_in_scope</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">)</span>
|
||||
</span><span id="walk_in_scope-744"><a href="#walk_in_scope-744"><span class="linenos">744</span></a><span class="sd"> prune ((node, parent, arg_key) -> bool): callable that returns True if</span>
|
||||
</span><span id="walk_in_scope-745"><a href="#walk_in_scope-745"><span class="linenos">745</span></a><span class="sd"> the generator should stop traversing this branch of the tree.</span>
|
||||
</span><span id="walk_in_scope-746"><a href="#walk_in_scope-746"><span class="linenos">746</span></a>
|
||||
</span><span id="walk_in_scope-747"><a href="#walk_in_scope-747"><span class="linenos">747</span></a><span class="sd"> Yields:</span>
|
||||
</span><span id="walk_in_scope-748"><a href="#walk_in_scope-748"><span class="linenos">748</span></a><span class="sd"> tuple[exp.Expression, Optional[exp.Expression], str]: node, parent, arg key</span>
|
||||
</span><span id="walk_in_scope-749"><a href="#walk_in_scope-749"><span class="linenos">749</span></a><span class="sd"> """</span>
|
||||
</span><span id="walk_in_scope-750"><a href="#walk_in_scope-750"><span class="linenos">750</span></a> <span class="c1"># We'll use this variable to pass state into the dfs generator.</span>
|
||||
</span><span id="walk_in_scope-751"><a href="#walk_in_scope-751"><span class="linenos">751</span></a> <span class="c1"># Whenever we set it to True, we exclude a subtree from traversal.</span>
|
||||
</span><span id="walk_in_scope-752"><a href="#walk_in_scope-752"><span class="linenos">752</span></a> <span class="n">crossed_scope_boundary</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
</span><span id="walk_in_scope-753"><a href="#walk_in_scope-753"><span class="linenos">753</span></a>
|
||||
</span><span id="walk_in_scope-754"><a href="#walk_in_scope-754"><span class="linenos">754</span></a> <span class="k">for</span> <span class="n">node</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">walk</span><span class="p">(</span>
|
||||
</span><span id="walk_in_scope-755"><a href="#walk_in_scope-755"><span class="linenos">755</span></a> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">,</span> <span class="n">prune</span><span class="o">=</span><span class="k">lambda</span> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">crossed_scope_boundary</span> <span class="ow">or</span> <span class="p">(</span><span class="n">prune</span> <span class="ow">and</span> <span class="n">prune</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">))</span>
|
||||
</span><span id="walk_in_scope-756"><a href="#walk_in_scope-756"><span class="linenos">756</span></a> <span class="p">):</span>
|
||||
</span><span id="walk_in_scope-757"><a href="#walk_in_scope-757"><span class="linenos">757</span></a> <span class="n">crossed_scope_boundary</span> <span class="o">=</span> <span class="kc">False</span>
|
||||
</span><span id="walk_in_scope-758"><a href="#walk_in_scope-758"><span class="linenos">758</span></a>
|
||||
</span><span id="walk_in_scope-759"><a href="#walk_in_scope-759"><span class="linenos">759</span></a> <span class="k">yield</span> <span class="n">node</span><span class="p">,</span> <span class="n">parent</span><span class="p">,</span> <span class="n">key</span>
|
||||
</span><span id="walk_in_scope-760"><a href="#walk_in_scope-760"><span class="linenos">760</span></a>
|
||||
</span><span id="walk_in_scope-761"><a href="#walk_in_scope-761"><span class="linenos">761</span></a> <span class="k">if</span> <span class="n">node</span> <span class="ow">is</span> <span class="n">expression</span><span class="p">:</span>
|
||||
</span><span id="walk_in_scope-762"><a href="#walk_in_scope-762"><span class="linenos">762</span></a> <span class="k">continue</span>
|
||||
</span><span id="walk_in_scope-763"><a href="#walk_in_scope-763"><span class="linenos">763</span></a> <span class="k">if</span> <span class="p">(</span>
|
||||
</span><span id="walk_in_scope-764"><a href="#walk_in_scope-764"><span class="linenos">764</span></a> <span class="nb">isinstance</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">CTE</span><span class="p">)</span>
|
||||
</span><span id="walk_in_scope-765"><a href="#walk_in_scope-765"><span class="linenos">765</span></a> <span class="ow">or</span> <span class="p">(</span>
|
||||
</span><span id="walk_in_scope-766"><a href="#walk_in_scope-766"><span class="linenos">766</span></a> <span class="nb">isinstance</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">Subquery</span><span class="p">)</span>
|
||||
</span><span id="walk_in_scope-767"><a href="#walk_in_scope-767"><span class="linenos">767</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">From</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Join</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">))</span>
|
||||
</span><span id="walk_in_scope-768"><a href="#walk_in_scope-768"><span class="linenos">768</span></a> <span class="ow">and</span> <span class="n">_is_derived_table</span><span class="p">(</span><span class="n">node</span><span class="p">)</span>
|
||||
</span><span id="walk_in_scope-769"><a href="#walk_in_scope-769"><span class="linenos">769</span></a> <span class="p">)</span>
|
||||
</span><span id="walk_in_scope-770"><a href="#walk_in_scope-770"><span class="linenos">770</span></a> <span class="ow">or</span> <span class="nb">isinstance</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">UDTF</span><span class="p">)</span>
|
||||
</span><span id="walk_in_scope-771"><a href="#walk_in_scope-771"><span class="linenos">771</span></a> <span class="ow">or</span> <span class="nb">isinstance</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">Subqueryable</span><span class="p">)</span>
|
||||
</span><span id="walk_in_scope-772"><a href="#walk_in_scope-772"><span class="linenos">772</span></a> <span class="p">):</span>
|
||||
</span><span id="walk_in_scope-773"><a href="#walk_in_scope-773"><span class="linenos">773</span></a> <span class="n">crossed_scope_boundary</span> <span class="o">=</span> <span class="kc">True</span>
|
||||
</span><span id="walk_in_scope-774"><a href="#walk_in_scope-774"><span class="linenos">774</span></a>
|
||||
</span><span id="walk_in_scope-775"><a href="#walk_in_scope-775"><span class="linenos">775</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Subquery</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UDTF</span><span class="p">)):</span>
|
||||
</span><span id="walk_in_scope-776"><a href="#walk_in_scope-776"><span class="linenos">776</span></a> <span class="c1"># The following args are not actually in the inner scope, so we should visit them</span>
|
||||
</span><span id="walk_in_scope-777"><a href="#walk_in_scope-777"><span class="linenos">777</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"joins"</span><span class="p">,</span> <span class="s2">"laterals"</span><span class="p">,</span> <span class="s2">"pivots"</span><span class="p">):</span>
|
||||
</span><span id="walk_in_scope-778"><a href="#walk_in_scope-778"><span class="linenos">778</span></a> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">node</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="n">key</span><span class="p">)</span> <span class="ow">or</span> <span class="p">[]:</span>
|
||||
</span><span id="walk_in_scope-779"><a href="#walk_in_scope-779"><span class="linenos">779</span></a> <span class="k">yield from</span> <span class="n">walk_in_scope</span><span class="p">(</span><span class="n">arg</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -2701,6 +2709,8 @@ nodes that start child scopes.</p>
|
|||
<li><strong>expression (exp.Expression):</strong> </li>
|
||||
<li><strong>bfs (bool):</strong> if set to True the BFS traversal order will be applied,
|
||||
otherwise the DFS traversal will be used instead.</li>
|
||||
<li><strong>prune ((node, parent, arg_key) -> bool):</strong> callable that returns True if
|
||||
the generator should stop traversing this branch of the tree.</li>
|
||||
</ul>
|
||||
|
||||
<h6 id="yields">Yields:</h6>
|
||||
|
@ -2723,24 +2733,24 @@ otherwise the DFS traversal will be used instead.</li>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#find_all_in_scope"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="find_all_in_scope-778"><a href="#find_all_in_scope-778"><span class="linenos">778</span></a><span class="k">def</span> <span class="nf">find_all_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="find_all_in_scope-779"><a href="#find_all_in_scope-779"><span class="linenos">779</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="find_all_in_scope-780"><a href="#find_all_in_scope-780"><span class="linenos">780</span></a><span class="sd"> Returns a generator object which visits all nodes in this scope and only yields those that</span>
|
||||
</span><span id="find_all_in_scope-781"><a href="#find_all_in_scope-781"><span class="linenos">781</span></a><span class="sd"> match at least one of the specified expression types.</span>
|
||||
</span><span id="find_all_in_scope-782"><a href="#find_all_in_scope-782"><span class="linenos">782</span></a>
|
||||
</span><span id="find_all_in_scope-783"><a href="#find_all_in_scope-783"><span class="linenos">783</span></a><span class="sd"> This does NOT traverse into subscopes.</span>
|
||||
</span><span id="find_all_in_scope-784"><a href="#find_all_in_scope-784"><span class="linenos">784</span></a>
|
||||
</span><span id="find_all_in_scope-785"><a href="#find_all_in_scope-785"><span class="linenos">785</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="find_all_in_scope-786"><a href="#find_all_in_scope-786"><span class="linenos">786</span></a><span class="sd"> expression (exp.Expression):</span>
|
||||
</span><span id="find_all_in_scope-787"><a href="#find_all_in_scope-787"><span class="linenos">787</span></a><span class="sd"> expression_types (tuple[type]|type): the expression type(s) to match.</span>
|
||||
</span><span id="find_all_in_scope-788"><a href="#find_all_in_scope-788"><span class="linenos">788</span></a><span class="sd"> bfs (bool): True to use breadth-first search, False to use depth-first.</span>
|
||||
</span><span id="find_all_in_scope-789"><a href="#find_all_in_scope-789"><span class="linenos">789</span></a>
|
||||
</span><span id="find_all_in_scope-790"><a href="#find_all_in_scope-790"><span class="linenos">790</span></a><span class="sd"> Yields:</span>
|
||||
</span><span id="find_all_in_scope-791"><a href="#find_all_in_scope-791"><span class="linenos">791</span></a><span class="sd"> exp.Expression: nodes</span>
|
||||
</span><span id="find_all_in_scope-792"><a href="#find_all_in_scope-792"><span class="linenos">792</span></a><span class="sd"> """</span>
|
||||
</span><span id="find_all_in_scope-793"><a href="#find_all_in_scope-793"><span class="linenos">793</span></a> <span class="k">for</span> <span class="n">expression</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span> <span class="ow">in</span> <span class="n">walk_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">):</span>
|
||||
</span><span id="find_all_in_scope-794"><a href="#find_all_in_scope-794"><span class="linenos">794</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="nb">tuple</span><span class="p">(</span><span class="n">ensure_collection</span><span class="p">(</span><span class="n">expression_types</span><span class="p">))):</span>
|
||||
</span><span id="find_all_in_scope-795"><a href="#find_all_in_scope-795"><span class="linenos">795</span></a> <span class="k">yield</span> <span class="n">expression</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="find_all_in_scope-782"><a href="#find_all_in_scope-782"><span class="linenos">782</span></a><span class="k">def</span> <span class="nf">find_all_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="find_all_in_scope-783"><a href="#find_all_in_scope-783"><span class="linenos">783</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="find_all_in_scope-784"><a href="#find_all_in_scope-784"><span class="linenos">784</span></a><span class="sd"> Returns a generator object which visits all nodes in this scope and only yields those that</span>
|
||||
</span><span id="find_all_in_scope-785"><a href="#find_all_in_scope-785"><span class="linenos">785</span></a><span class="sd"> match at least one of the specified expression types.</span>
|
||||
</span><span id="find_all_in_scope-786"><a href="#find_all_in_scope-786"><span class="linenos">786</span></a>
|
||||
</span><span id="find_all_in_scope-787"><a href="#find_all_in_scope-787"><span class="linenos">787</span></a><span class="sd"> This does NOT traverse into subscopes.</span>
|
||||
</span><span id="find_all_in_scope-788"><a href="#find_all_in_scope-788"><span class="linenos">788</span></a>
|
||||
</span><span id="find_all_in_scope-789"><a href="#find_all_in_scope-789"><span class="linenos">789</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="find_all_in_scope-790"><a href="#find_all_in_scope-790"><span class="linenos">790</span></a><span class="sd"> expression (exp.Expression):</span>
|
||||
</span><span id="find_all_in_scope-791"><a href="#find_all_in_scope-791"><span class="linenos">791</span></a><span class="sd"> expression_types (tuple[type]|type): the expression type(s) to match.</span>
|
||||
</span><span id="find_all_in_scope-792"><a href="#find_all_in_scope-792"><span class="linenos">792</span></a><span class="sd"> bfs (bool): True to use breadth-first search, False to use depth-first.</span>
|
||||
</span><span id="find_all_in_scope-793"><a href="#find_all_in_scope-793"><span class="linenos">793</span></a>
|
||||
</span><span id="find_all_in_scope-794"><a href="#find_all_in_scope-794"><span class="linenos">794</span></a><span class="sd"> Yields:</span>
|
||||
</span><span id="find_all_in_scope-795"><a href="#find_all_in_scope-795"><span class="linenos">795</span></a><span class="sd"> exp.Expression: nodes</span>
|
||||
</span><span id="find_all_in_scope-796"><a href="#find_all_in_scope-796"><span class="linenos">796</span></a><span class="sd"> """</span>
|
||||
</span><span id="find_all_in_scope-797"><a href="#find_all_in_scope-797"><span class="linenos">797</span></a> <span class="k">for</span> <span class="n">expression</span><span class="p">,</span> <span class="o">*</span><span class="n">_</span> <span class="ow">in</span> <span class="n">walk_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">):</span>
|
||||
</span><span id="find_all_in_scope-798"><a href="#find_all_in_scope-798"><span class="linenos">798</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="nb">tuple</span><span class="p">(</span><span class="n">ensure_collection</span><span class="p">(</span><span class="n">expression_types</span><span class="p">))):</span>
|
||||
</span><span id="find_all_in_scope-799"><a href="#find_all_in_scope-799"><span class="linenos">799</span></a> <span class="k">yield</span> <span class="n">expression</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -2777,22 +2787,22 @@ match at least one of the specified expression types.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#find_in_scope"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="find_in_scope-798"><a href="#find_in_scope-798"><span class="linenos">798</span></a><span class="k">def</span> <span class="nf">find_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="find_in_scope-799"><a href="#find_in_scope-799"><span class="linenos">799</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="find_in_scope-800"><a href="#find_in_scope-800"><span class="linenos">800</span></a><span class="sd"> Returns the first node in this scope which matches at least one of the specified types.</span>
|
||||
</span><span id="find_in_scope-801"><a href="#find_in_scope-801"><span class="linenos">801</span></a>
|
||||
</span><span id="find_in_scope-802"><a href="#find_in_scope-802"><span class="linenos">802</span></a><span class="sd"> This does NOT traverse into subscopes.</span>
|
||||
</span><span id="find_in_scope-803"><a href="#find_in_scope-803"><span class="linenos">803</span></a>
|
||||
</span><span id="find_in_scope-804"><a href="#find_in_scope-804"><span class="linenos">804</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="find_in_scope-805"><a href="#find_in_scope-805"><span class="linenos">805</span></a><span class="sd"> expression (exp.Expression):</span>
|
||||
</span><span id="find_in_scope-806"><a href="#find_in_scope-806"><span class="linenos">806</span></a><span class="sd"> expression_types (tuple[type]|type): the expression type(s) to match.</span>
|
||||
</span><span id="find_in_scope-807"><a href="#find_in_scope-807"><span class="linenos">807</span></a><span class="sd"> bfs (bool): True to use breadth-first search, False to use depth-first.</span>
|
||||
</span><span id="find_in_scope-808"><a href="#find_in_scope-808"><span class="linenos">808</span></a>
|
||||
</span><span id="find_in_scope-809"><a href="#find_in_scope-809"><span class="linenos">809</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="find_in_scope-810"><a href="#find_in_scope-810"><span class="linenos">810</span></a><span class="sd"> exp.Expression: the node which matches the criteria or None if no node matching</span>
|
||||
</span><span id="find_in_scope-811"><a href="#find_in_scope-811"><span class="linenos">811</span></a><span class="sd"> the criteria was found.</span>
|
||||
</span><span id="find_in_scope-812"><a href="#find_in_scope-812"><span class="linenos">812</span></a><span class="sd"> """</span>
|
||||
</span><span id="find_in_scope-813"><a href="#find_in_scope-813"><span class="linenos">813</span></a> <span class="k">return</span> <span class="nb">next</span><span class="p">(</span><span class="n">find_all_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">),</span> <span class="kc">None</span><span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="find_in_scope-802"><a href="#find_in_scope-802"><span class="linenos">802</span></a><span class="k">def</span> <span class="nf">find_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="kc">True</span><span class="p">):</span>
|
||||
</span><span id="find_in_scope-803"><a href="#find_in_scope-803"><span class="linenos">803</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="find_in_scope-804"><a href="#find_in_scope-804"><span class="linenos">804</span></a><span class="sd"> Returns the first node in this scope which matches at least one of the specified types.</span>
|
||||
</span><span id="find_in_scope-805"><a href="#find_in_scope-805"><span class="linenos">805</span></a>
|
||||
</span><span id="find_in_scope-806"><a href="#find_in_scope-806"><span class="linenos">806</span></a><span class="sd"> This does NOT traverse into subscopes.</span>
|
||||
</span><span id="find_in_scope-807"><a href="#find_in_scope-807"><span class="linenos">807</span></a>
|
||||
</span><span id="find_in_scope-808"><a href="#find_in_scope-808"><span class="linenos">808</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="find_in_scope-809"><a href="#find_in_scope-809"><span class="linenos">809</span></a><span class="sd"> expression (exp.Expression):</span>
|
||||
</span><span id="find_in_scope-810"><a href="#find_in_scope-810"><span class="linenos">810</span></a><span class="sd"> expression_types (tuple[type]|type): the expression type(s) to match.</span>
|
||||
</span><span id="find_in_scope-811"><a href="#find_in_scope-811"><span class="linenos">811</span></a><span class="sd"> bfs (bool): True to use breadth-first search, False to use depth-first.</span>
|
||||
</span><span id="find_in_scope-812"><a href="#find_in_scope-812"><span class="linenos">812</span></a>
|
||||
</span><span id="find_in_scope-813"><a href="#find_in_scope-813"><span class="linenos">813</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="find_in_scope-814"><a href="#find_in_scope-814"><span class="linenos">814</span></a><span class="sd"> exp.Expression: the node which matches the criteria or None if no node matching</span>
|
||||
</span><span id="find_in_scope-815"><a href="#find_in_scope-815"><span class="linenos">815</span></a><span class="sd"> the criteria was found.</span>
|
||||
</span><span id="find_in_scope-816"><a href="#find_in_scope-816"><span class="linenos">816</span></a><span class="sd"> """</span>
|
||||
</span><span id="find_in_scope-817"><a href="#find_in_scope-817"><span class="linenos">817</span></a> <span class="k">return</span> <span class="nb">next</span><span class="p">(</span><span class="n">find_all_in_scope</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">expression_types</span><span class="p">,</span> <span class="n">bfs</span><span class="o">=</span><span class="n">bfs</span><span class="p">),</span> <span class="kc">None</span><span class="p">)</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
20250
docs/sqlglot/parser.html
20250
docs/sqlglot/parser.html
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load diff
|
@ -63,9 +63,6 @@
|
|||
<li>
|
||||
<a class="function" href="#epoch_cast_to_ts">epoch_cast_to_ts</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="function" href="#timestamp_to_cast">timestamp_to_cast</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="function" href="#eliminate_semi_and_anti_joins">eliminate_semi_and_anti_joins</a>
|
||||
</li>
|
||||
|
@ -449,75 +446,66 @@
|
|||
</span><span id="L-352"><a href="#L-352"><span class="linenos">352</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-353"><a href="#L-353"><span class="linenos">353</span></a>
|
||||
</span><span id="L-354"><a href="#L-354"><span class="linenos">354</span></a>
|
||||
</span><span id="L-355"><a href="#L-355"><span class="linenos">355</span></a><span class="k">def</span> <span class="nf">timestamp_to_cast</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-356"><a href="#L-356"><span class="linenos">356</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">Timestamp</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">:</span>
|
||||
</span><span id="L-357"><a href="#L-357"><span class="linenos">357</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span>
|
||||
</span><span id="L-358"><a href="#L-358"><span class="linenos">358</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
|
||||
</span><span id="L-359"><a href="#L-359"><span class="linenos">359</span></a> <span class="n">to</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span>
|
||||
</span><span id="L-360"><a href="#L-360"><span class="linenos">360</span></a> <span class="p">)</span>
|
||||
</span><span id="L-361"><a href="#L-361"><span class="linenos">361</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-362"><a href="#L-362"><span class="linenos">362</span></a>
|
||||
</span><span id="L-363"><a href="#L-363"><span class="linenos">363</span></a>
|
||||
</span><span id="L-364"><a href="#L-364"><span class="linenos">364</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-365"><a href="#L-365"><span class="linenos">365</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-366"><a href="#L-366"><span class="linenos">366</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>
|
||||
</span><span id="L-367"><a href="#L-367"><span class="linenos">367</span></a> <span class="n">on</span> <span class="o">=</span> <span class="n">join</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">"on"</span><span class="p">)</span>
|
||||
</span><span id="L-368"><a href="#L-368"><span class="linenos">368</span></a> <span class="k">if</span> <span class="n">on</span> <span class="ow">and</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"SEMI"</span><span class="p">,</span> <span class="s2">"ANTI"</span><span class="p">):</span>
|
||||
</span><span id="L-369"><a href="#L-369"><span class="linenos">369</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">"1"</span><span class="p">)</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">on</span><span class="p">)</span>
|
||||
</span><span id="L-370"><a href="#L-370"><span class="linenos">370</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Exists</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">subquery</span><span class="p">)</span>
|
||||
</span><span id="L-371"><a href="#L-371"><span class="linenos">371</span></a> <span class="k">if</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"ANTI"</span><span class="p">:</span>
|
||||
</span><span id="L-372"><a href="#L-372"><span class="linenos">372</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="n">exists</span><span class="o">.</span><span class="n">not_</span><span class="p">(</span><span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
</span><span id="L-373"><a href="#L-373"><span class="linenos">373</span></a>
|
||||
</span><span id="L-374"><a href="#L-374"><span class="linenos">374</span></a> <span class="n">join</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
|
||||
</span><span id="L-375"><a href="#L-375"><span class="linenos">375</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">exists</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
</span><span id="L-376"><a href="#L-376"><span class="linenos">376</span></a>
|
||||
</span><span id="L-377"><a href="#L-377"><span class="linenos">377</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-355"><a href="#L-355"><span class="linenos">355</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-356"><a href="#L-356"><span class="linenos">356</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-357"><a href="#L-357"><span class="linenos">357</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>
|
||||
</span><span id="L-358"><a href="#L-358"><span class="linenos">358</span></a> <span class="n">on</span> <span class="o">=</span> <span class="n">join</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">"on"</span><span class="p">)</span>
|
||||
</span><span id="L-359"><a href="#L-359"><span class="linenos">359</span></a> <span class="k">if</span> <span class="n">on</span> <span class="ow">and</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"SEMI"</span><span class="p">,</span> <span class="s2">"ANTI"</span><span class="p">):</span>
|
||||
</span><span id="L-360"><a href="#L-360"><span class="linenos">360</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">"1"</span><span class="p">)</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">on</span><span class="p">)</span>
|
||||
</span><span id="L-361"><a href="#L-361"><span class="linenos">361</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Exists</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">subquery</span><span class="p">)</span>
|
||||
</span><span id="L-362"><a href="#L-362"><span class="linenos">362</span></a> <span class="k">if</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"ANTI"</span><span class="p">:</span>
|
||||
</span><span id="L-363"><a href="#L-363"><span class="linenos">363</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="n">exists</span><span class="o">.</span><span class="n">not_</span><span class="p">(</span><span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
</span><span id="L-364"><a href="#L-364"><span class="linenos">364</span></a>
|
||||
</span><span id="L-365"><a href="#L-365"><span class="linenos">365</span></a> <span class="n">join</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
|
||||
</span><span id="L-366"><a href="#L-366"><span class="linenos">366</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">exists</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
</span><span id="L-367"><a href="#L-367"><span class="linenos">367</span></a>
|
||||
</span><span id="L-368"><a href="#L-368"><span class="linenos">368</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-369"><a href="#L-369"><span class="linenos">369</span></a>
|
||||
</span><span id="L-370"><a href="#L-370"><span class="linenos">370</span></a>
|
||||
</span><span id="L-371"><a href="#L-371"><span class="linenos">371</span></a><span class="k">def</span> <span class="nf">preprocess</span><span class="p">(</span>
|
||||
</span><span id="L-372"><a href="#L-372"><span class="linenos">372</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-373"><a href="#L-373"><span class="linenos">373</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-374"><a href="#L-374"><span class="linenos">374</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-375"><a href="#L-375"><span class="linenos">375</span></a><span class="sd"> Creates a new transform by chaining a sequence of transformations and converts the resulting</span>
|
||||
</span><span id="L-376"><a href="#L-376"><span class="linenos">376</span></a><span class="sd"> expression to SQL, using either the "_sql" method corresponding to the resulting expression,</span>
|
||||
</span><span id="L-377"><a href="#L-377"><span class="linenos">377</span></a><span class="sd"> or the appropriate `Generator.TRANSFORMS` function (when applicable -- see below).</span>
|
||||
</span><span id="L-378"><a href="#L-378"><span class="linenos">378</span></a>
|
||||
</span><span id="L-379"><a href="#L-379"><span class="linenos">379</span></a>
|
||||
</span><span id="L-380"><a href="#L-380"><span class="linenos">380</span></a><span class="k">def</span> <span class="nf">preprocess</span><span class="p">(</span>
|
||||
</span><span id="L-381"><a href="#L-381"><span class="linenos">381</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-382"><a href="#L-382"><span class="linenos">382</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-383"><a href="#L-383"><span class="linenos">383</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-384"><a href="#L-384"><span class="linenos">384</span></a><span class="sd"> Creates a new transform by chaining a sequence of transformations and converts the resulting</span>
|
||||
</span><span id="L-385"><a href="#L-385"><span class="linenos">385</span></a><span class="sd"> expression to SQL, using either the "_sql" method corresponding to the resulting expression,</span>
|
||||
</span><span id="L-386"><a href="#L-386"><span class="linenos">386</span></a><span class="sd"> or the appropriate `Generator.TRANSFORMS` function (when applicable -- see below).</span>
|
||||
</span><span id="L-387"><a href="#L-387"><span class="linenos">387</span></a>
|
||||
</span><span id="L-388"><a href="#L-388"><span class="linenos">388</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="L-389"><a href="#L-389"><span class="linenos">389</span></a><span class="sd"> transforms: sequence of transform functions. These will be called in order.</span>
|
||||
</span><span id="L-390"><a href="#L-390"><span class="linenos">390</span></a>
|
||||
</span><span id="L-391"><a href="#L-391"><span class="linenos">391</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="L-392"><a href="#L-392"><span class="linenos">392</span></a><span class="sd"> Function that can be used as a generator transform.</span>
|
||||
</span><span id="L-393"><a href="#L-393"><span class="linenos">393</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-394"><a href="#L-394"><span class="linenos">394</span></a>
|
||||
</span><span id="L-395"><a href="#L-395"><span class="linenos">395</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-396"><a href="#L-396"><span class="linenos">396</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-397"><a href="#L-397"><span class="linenos">397</span></a>
|
||||
</span><span id="L-398"><a href="#L-398"><span class="linenos">398</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">transforms</span><span class="p">[</span><span class="mi">0</span><span class="p">](</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">())</span>
|
||||
</span><span id="L-399"><a href="#L-399"><span class="linenos">399</span></a> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">transforms</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span>
|
||||
</span><span id="L-400"><a href="#L-400"><span class="linenos">400</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">t</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-401"><a href="#L-401"><span class="linenos">401</span></a>
|
||||
</span><span id="L-402"><a href="#L-402"><span class="linenos">402</span></a> <span class="n">_sql_handler</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">key</span> <span class="o">+</span> <span class="s2">"_sql"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
</span><span id="L-403"><a href="#L-403"><span class="linenos">403</span></a> <span class="k">if</span> <span class="n">_sql_handler</span><span class="p">:</span>
|
||||
</span><span id="L-404"><a href="#L-404"><span class="linenos">404</span></a> <span class="k">return</span> <span class="n">_sql_handler</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-405"><a href="#L-405"><span class="linenos">405</span></a>
|
||||
</span><span id="L-406"><a href="#L-406"><span class="linenos">406</span></a> <span class="n">transforms_handler</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span>
|
||||
</span><span id="L-407"><a href="#L-407"><span class="linenos">407</span></a> <span class="k">if</span> <span class="n">transforms_handler</span><span class="p">:</span>
|
||||
</span><span id="L-408"><a href="#L-408"><span class="linenos">408</span></a> <span class="k">if</span> <span class="n">expression_type</span> <span class="ow">is</span> <span class="nb">type</span><span class="p">(</span><span class="n">expression</span><span class="p">):</span>
|
||||
</span><span id="L-409"><a href="#L-409"><span class="linenos">409</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">Func</span><span class="p">):</span>
|
||||
</span><span id="L-410"><a href="#L-410"><span class="linenos">410</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-379"><a href="#L-379"><span class="linenos">379</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="L-380"><a href="#L-380"><span class="linenos">380</span></a><span class="sd"> transforms: sequence of transform functions. These will be called in order.</span>
|
||||
</span><span id="L-381"><a href="#L-381"><span class="linenos">381</span></a>
|
||||
</span><span id="L-382"><a href="#L-382"><span class="linenos">382</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="L-383"><a href="#L-383"><span class="linenos">383</span></a><span class="sd"> Function that can be used as a generator transform.</span>
|
||||
</span><span id="L-384"><a href="#L-384"><span class="linenos">384</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-385"><a href="#L-385"><span class="linenos">385</span></a>
|
||||
</span><span id="L-386"><a href="#L-386"><span class="linenos">386</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-387"><a href="#L-387"><span class="linenos">387</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-388"><a href="#L-388"><span class="linenos">388</span></a>
|
||||
</span><span id="L-389"><a href="#L-389"><span class="linenos">389</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">transforms</span><span class="p">[</span><span class="mi">0</span><span class="p">](</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">())</span>
|
||||
</span><span id="L-390"><a href="#L-390"><span class="linenos">390</span></a> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">transforms</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span>
|
||||
</span><span id="L-391"><a href="#L-391"><span class="linenos">391</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">t</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-392"><a href="#L-392"><span class="linenos">392</span></a>
|
||||
</span><span id="L-393"><a href="#L-393"><span class="linenos">393</span></a> <span class="n">_sql_handler</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">key</span> <span class="o">+</span> <span class="s2">"_sql"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
</span><span id="L-394"><a href="#L-394"><span class="linenos">394</span></a> <span class="k">if</span> <span class="n">_sql_handler</span><span class="p">:</span>
|
||||
</span><span id="L-395"><a href="#L-395"><span class="linenos">395</span></a> <span class="k">return</span> <span class="n">_sql_handler</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-396"><a href="#L-396"><span class="linenos">396</span></a>
|
||||
</span><span id="L-397"><a href="#L-397"><span class="linenos">397</span></a> <span class="n">transforms_handler</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span>
|
||||
</span><span id="L-398"><a href="#L-398"><span class="linenos">398</span></a> <span class="k">if</span> <span class="n">transforms_handler</span><span class="p">:</span>
|
||||
</span><span id="L-399"><a href="#L-399"><span class="linenos">399</span></a> <span class="k">if</span> <span class="n">expression_type</span> <span class="ow">is</span> <span class="nb">type</span><span class="p">(</span><span class="n">expression</span><span class="p">):</span>
|
||||
</span><span id="L-400"><a href="#L-400"><span class="linenos">400</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">Func</span><span class="p">):</span>
|
||||
</span><span id="L-401"><a href="#L-401"><span class="linenos">401</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-402"><a href="#L-402"><span class="linenos">402</span></a>
|
||||
</span><span id="L-403"><a href="#L-403"><span class="linenos">403</span></a> <span class="c1"># Ensures we don't enter an infinite loop. This can happen when the original expression</span>
|
||||
</span><span id="L-404"><a href="#L-404"><span class="linenos">404</span></a> <span class="c1"># has the same type as the final expression and there's no _sql method available for it,</span>
|
||||
</span><span id="L-405"><a href="#L-405"><span class="linenos">405</span></a> <span class="c1"># because then it'd re-enter _to_sql.</span>
|
||||
</span><span id="L-406"><a href="#L-406"><span class="linenos">406</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
|
||||
</span><span id="L-407"><a href="#L-407"><span class="linenos">407</span></a> <span class="sa">f</span><span class="s2">"Expression type </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2"> requires a _sql method in order to be transformed."</span>
|
||||
</span><span id="L-408"><a href="#L-408"><span class="linenos">408</span></a> <span class="p">)</span>
|
||||
</span><span id="L-409"><a href="#L-409"><span class="linenos">409</span></a>
|
||||
</span><span id="L-410"><a href="#L-410"><span class="linenos">410</span></a> <span class="k">return</span> <span class="n">transforms_handler</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</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 class="c1"># Ensures we don't enter an infinite loop. This can happen when the original expression</span>
|
||||
</span><span id="L-413"><a href="#L-413"><span class="linenos">413</span></a> <span class="c1"># has the same type as the final expression and there's no _sql method available for it,</span>
|
||||
</span><span id="L-414"><a href="#L-414"><span class="linenos">414</span></a> <span class="c1"># because then it'd re-enter _to_sql.</span>
|
||||
</span><span id="L-415"><a href="#L-415"><span class="linenos">415</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
|
||||
</span><span id="L-416"><a href="#L-416"><span class="linenos">416</span></a> <span class="sa">f</span><span class="s2">"Expression type </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2"> requires a _sql method in order to be transformed."</span>
|
||||
</span><span id="L-417"><a href="#L-417"><span class="linenos">417</span></a> <span class="p">)</span>
|
||||
</span><span id="L-418"><a href="#L-418"><span class="linenos">418</span></a>
|
||||
</span><span id="L-419"><a href="#L-419"><span class="linenos">419</span></a> <span class="k">return</span> <span class="n">transforms_handler</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-420"><a href="#L-420"><span class="linenos">420</span></a>
|
||||
</span><span id="L-421"><a href="#L-421"><span class="linenos">421</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported expression type </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">."</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">return</span> <span class="n">_to_sql</span>
|
||||
</span><span id="L-412"><a href="#L-412"><span class="linenos">412</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported expression type </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
</span><span id="L-413"><a href="#L-413"><span class="linenos">413</span></a>
|
||||
</span><span id="L-414"><a href="#L-414"><span class="linenos">414</span></a> <span class="k">return</span> <span class="n">_to_sql</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -1079,30 +1067,6 @@ other expressions. This transforms removes the precision from parameterized type
|
|||
|
||||
|
||||
|
||||
</section>
|
||||
<section id="timestamp_to_cast">
|
||||
<input id="timestamp_to_cast-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||
<div class="attr function">
|
||||
|
||||
<span class="def">def</span>
|
||||
<span class="name">timestamp_to_cast</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n"><a href="expressions.html#Expression">sqlglot.expressions.Expression</a></span></span><span class="return-annotation">) -> <span class="n"><a href="expressions.html#Expression">sqlglot.expressions.Expression</a></span>:</span></span>
|
||||
|
||||
<label class="view-source-button" for="timestamp_to_cast-view-source"><span>View Source</span></label>
|
||||
|
||||
</div>
|
||||
<a class="headerlink" href="#timestamp_to_cast"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="timestamp_to_cast-356"><a href="#timestamp_to_cast-356"><span class="linenos">356</span></a><span class="k">def</span> <span class="nf">timestamp_to_cast</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="timestamp_to_cast-357"><a href="#timestamp_to_cast-357"><span class="linenos">357</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">Timestamp</span><span class="p">)</span> <span class="ow">and</span> <span class="ow">not</span> <span class="n">expression</span><span class="o">.</span><span class="n">expression</span><span class="p">:</span>
|
||||
</span><span id="timestamp_to_cast-358"><a href="#timestamp_to_cast-358"><span class="linenos">358</span></a> <span class="k">return</span> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span>
|
||||
</span><span id="timestamp_to_cast-359"><a href="#timestamp_to_cast-359"><span class="linenos">359</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
|
||||
</span><span id="timestamp_to_cast-360"><a href="#timestamp_to_cast-360"><span class="linenos">360</span></a> <span class="n">to</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP</span><span class="p">,</span>
|
||||
</span><span id="timestamp_to_cast-361"><a href="#timestamp_to_cast-361"><span class="linenos">361</span></a> <span class="p">)</span>
|
||||
</span><span id="timestamp_to_cast-362"><a href="#timestamp_to_cast-362"><span class="linenos">362</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
||||
|
||||
</section>
|
||||
<section id="eliminate_semi_and_anti_joins">
|
||||
<input id="eliminate_semi_and_anti_joins-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||
|
@ -1115,20 +1079,20 @@ 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-365"><a href="#eliminate_semi_and_anti_joins-365"><span class="linenos">365</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="eliminate_semi_and_anti_joins-366"><a href="#eliminate_semi_and_anti_joins-366"><span class="linenos">366</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-367"><a href="#eliminate_semi_and_anti_joins-367"><span class="linenos">367</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>
|
||||
</span><span id="eliminate_semi_and_anti_joins-368"><a href="#eliminate_semi_and_anti_joins-368"><span class="linenos">368</span></a> <span class="n">on</span> <span class="o">=</span> <span class="n">join</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">"on"</span><span class="p">)</span>
|
||||
</span><span id="eliminate_semi_and_anti_joins-369"><a href="#eliminate_semi_and_anti_joins-369"><span class="linenos">369</span></a> <span class="k">if</span> <span class="n">on</span> <span class="ow">and</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"SEMI"</span><span class="p">,</span> <span class="s2">"ANTI"</span><span class="p">):</span>
|
||||
</span><span id="eliminate_semi_and_anti_joins-370"><a href="#eliminate_semi_and_anti_joins-370"><span class="linenos">370</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">"1"</span><span class="p">)</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">on</span><span class="p">)</span>
|
||||
</span><span id="eliminate_semi_and_anti_joins-371"><a href="#eliminate_semi_and_anti_joins-371"><span class="linenos">371</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Exists</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">subquery</span><span class="p">)</span>
|
||||
</span><span id="eliminate_semi_and_anti_joins-372"><a href="#eliminate_semi_and_anti_joins-372"><span class="linenos">372</span></a> <span class="k">if</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"ANTI"</span><span class="p">:</span>
|
||||
</span><span id="eliminate_semi_and_anti_joins-373"><a href="#eliminate_semi_and_anti_joins-373"><span class="linenos">373</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="n">exists</span><span class="o">.</span><span class="n">not_</span><span class="p">(</span><span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
</span><span id="eliminate_semi_and_anti_joins-374"><a href="#eliminate_semi_and_anti_joins-374"><span class="linenos">374</span></a>
|
||||
</span><span id="eliminate_semi_and_anti_joins-375"><a href="#eliminate_semi_and_anti_joins-375"><span class="linenos">375</span></a> <span class="n">join</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
|
||||
</span><span id="eliminate_semi_and_anti_joins-376"><a href="#eliminate_semi_and_anti_joins-376"><span class="linenos">376</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">exists</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
</span><span id="eliminate_semi_and_anti_joins-377"><a href="#eliminate_semi_and_anti_joins-377"><span class="linenos">377</span></a>
|
||||
</span><span id="eliminate_semi_and_anti_joins-378"><a href="#eliminate_semi_and_anti_joins-378"><span class="linenos">378</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="eliminate_semi_and_anti_joins-356"><a href="#eliminate_semi_and_anti_joins-356"><span class="linenos">356</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="eliminate_semi_and_anti_joins-357"><a href="#eliminate_semi_and_anti_joins-357"><span class="linenos">357</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-358"><a href="#eliminate_semi_and_anti_joins-358"><span class="linenos">358</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>
|
||||
</span><span id="eliminate_semi_and_anti_joins-359"><a href="#eliminate_semi_and_anti_joins-359"><span class="linenos">359</span></a> <span class="n">on</span> <span class="o">=</span> <span class="n">join</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">"on"</span><span class="p">)</span>
|
||||
</span><span id="eliminate_semi_and_anti_joins-360"><a href="#eliminate_semi_and_anti_joins-360"><span class="linenos">360</span></a> <span class="k">if</span> <span class="n">on</span> <span class="ow">and</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="ow">in</span> <span class="p">(</span><span class="s2">"SEMI"</span><span class="p">,</span> <span class="s2">"ANTI"</span><span class="p">):</span>
|
||||
</span><span id="eliminate_semi_and_anti_joins-361"><a href="#eliminate_semi_and_anti_joins-361"><span class="linenos">361</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">select</span><span class="p">(</span><span class="s2">"1"</span><span class="p">)</span><span class="o">.</span><span class="n">from_</span><span class="p">(</span><span class="n">join</span><span class="o">.</span><span class="n">this</span><span class="p">)</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">on</span><span class="p">)</span>
|
||||
</span><span id="eliminate_semi_and_anti_joins-362"><a href="#eliminate_semi_and_anti_joins-362"><span class="linenos">362</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Exists</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">subquery</span><span class="p">)</span>
|
||||
</span><span id="eliminate_semi_and_anti_joins-363"><a href="#eliminate_semi_and_anti_joins-363"><span class="linenos">363</span></a> <span class="k">if</span> <span class="n">join</span><span class="o">.</span><span class="n">kind</span> <span class="o">==</span> <span class="s2">"ANTI"</span><span class="p">:</span>
|
||||
</span><span id="eliminate_semi_and_anti_joins-364"><a href="#eliminate_semi_and_anti_joins-364"><span class="linenos">364</span></a> <span class="n">exists</span> <span class="o">=</span> <span class="n">exists</span><span class="o">.</span><span class="n">not_</span><span class="p">(</span><span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
</span><span id="eliminate_semi_and_anti_joins-365"><a href="#eliminate_semi_and_anti_joins-365"><span class="linenos">365</span></a>
|
||||
</span><span id="eliminate_semi_and_anti_joins-366"><a href="#eliminate_semi_and_anti_joins-366"><span class="linenos">366</span></a> <span class="n">join</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span>
|
||||
</span><span id="eliminate_semi_and_anti_joins-367"><a href="#eliminate_semi_and_anti_joins-367"><span class="linenos">367</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">where</span><span class="p">(</span><span class="n">exists</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
|
||||
</span><span id="eliminate_semi_and_anti_joins-368"><a href="#eliminate_semi_and_anti_joins-368"><span class="linenos">368</span></a>
|
||||
</span><span id="eliminate_semi_and_anti_joins-369"><a href="#eliminate_semi_and_anti_joins-369"><span class="linenos">369</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -1146,50 +1110,50 @@ other expressions. This transforms removes the precision from parameterized type
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#preprocess"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="preprocess-381"><a href="#preprocess-381"><span class="linenos">381</span></a><span class="k">def</span> <span class="nf">preprocess</span><span class="p">(</span>
|
||||
</span><span id="preprocess-382"><a href="#preprocess-382"><span class="linenos">382</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-383"><a href="#preprocess-383"><span class="linenos">383</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-384"><a href="#preprocess-384"><span class="linenos">384</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="preprocess-385"><a href="#preprocess-385"><span class="linenos">385</span></a><span class="sd"> Creates a new transform by chaining a sequence of transformations and converts the resulting</span>
|
||||
</span><span id="preprocess-386"><a href="#preprocess-386"><span class="linenos">386</span></a><span class="sd"> expression to SQL, using either the "_sql" method corresponding to the resulting expression,</span>
|
||||
</span><span id="preprocess-387"><a href="#preprocess-387"><span class="linenos">387</span></a><span class="sd"> or the appropriate `Generator.TRANSFORMS` function (when applicable -- see below).</span>
|
||||
</span><span id="preprocess-388"><a href="#preprocess-388"><span class="linenos">388</span></a>
|
||||
</span><span id="preprocess-389"><a href="#preprocess-389"><span class="linenos">389</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="preprocess-390"><a href="#preprocess-390"><span class="linenos">390</span></a><span class="sd"> transforms: sequence of transform functions. These will be called in order.</span>
|
||||
</span><span id="preprocess-391"><a href="#preprocess-391"><span class="linenos">391</span></a>
|
||||
</span><span id="preprocess-392"><a href="#preprocess-392"><span class="linenos">392</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="preprocess-393"><a href="#preprocess-393"><span class="linenos">393</span></a><span class="sd"> Function that can be used as a generator transform.</span>
|
||||
</span><span id="preprocess-394"><a href="#preprocess-394"><span class="linenos">394</span></a><span class="sd"> """</span>
|
||||
</span><span id="preprocess-395"><a href="#preprocess-395"><span class="linenos">395</span></a>
|
||||
</span><span id="preprocess-396"><a href="#preprocess-396"><span class="linenos">396</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-397"><a href="#preprocess-397"><span class="linenos">397</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-398"><a href="#preprocess-398"><span class="linenos">398</span></a>
|
||||
</span><span id="preprocess-399"><a href="#preprocess-399"><span class="linenos">399</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">transforms</span><span class="p">[</span><span class="mi">0</span><span class="p">](</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">())</span>
|
||||
</span><span id="preprocess-400"><a href="#preprocess-400"><span class="linenos">400</span></a> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">transforms</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span>
|
||||
</span><span id="preprocess-401"><a href="#preprocess-401"><span class="linenos">401</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">t</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="preprocess-402"><a href="#preprocess-402"><span class="linenos">402</span></a>
|
||||
</span><span id="preprocess-403"><a href="#preprocess-403"><span class="linenos">403</span></a> <span class="n">_sql_handler</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">key</span> <span class="o">+</span> <span class="s2">"_sql"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
</span><span id="preprocess-404"><a href="#preprocess-404"><span class="linenos">404</span></a> <span class="k">if</span> <span class="n">_sql_handler</span><span class="p">:</span>
|
||||
</span><span id="preprocess-405"><a href="#preprocess-405"><span class="linenos">405</span></a> <span class="k">return</span> <span class="n">_sql_handler</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="preprocess-406"><a href="#preprocess-406"><span class="linenos">406</span></a>
|
||||
</span><span id="preprocess-407"><a href="#preprocess-407"><span class="linenos">407</span></a> <span class="n">transforms_handler</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span>
|
||||
</span><span id="preprocess-408"><a href="#preprocess-408"><span class="linenos">408</span></a> <span class="k">if</span> <span class="n">transforms_handler</span><span class="p">:</span>
|
||||
</span><span id="preprocess-409"><a href="#preprocess-409"><span class="linenos">409</span></a> <span class="k">if</span> <span class="n">expression_type</span> <span class="ow">is</span> <span class="nb">type</span><span class="p">(</span><span class="n">expression</span><span class="p">):</span>
|
||||
</span><span id="preprocess-410"><a href="#preprocess-410"><span class="linenos">410</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">Func</span><span class="p">):</span>
|
||||
</span><span id="preprocess-411"><a href="#preprocess-411"><span class="linenos">411</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="preprocess-372"><a href="#preprocess-372"><span class="linenos">372</span></a><span class="k">def</span> <span class="nf">preprocess</span><span class="p">(</span>
|
||||
</span><span id="preprocess-373"><a href="#preprocess-373"><span class="linenos">373</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-374"><a href="#preprocess-374"><span class="linenos">374</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-375"><a href="#preprocess-375"><span class="linenos">375</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="preprocess-376"><a href="#preprocess-376"><span class="linenos">376</span></a><span class="sd"> Creates a new transform by chaining a sequence of transformations and converts the resulting</span>
|
||||
</span><span id="preprocess-377"><a href="#preprocess-377"><span class="linenos">377</span></a><span class="sd"> expression to SQL, using either the "_sql" method corresponding to the resulting expression,</span>
|
||||
</span><span id="preprocess-378"><a href="#preprocess-378"><span class="linenos">378</span></a><span class="sd"> or the appropriate `Generator.TRANSFORMS` function (when applicable -- see below).</span>
|
||||
</span><span id="preprocess-379"><a href="#preprocess-379"><span class="linenos">379</span></a>
|
||||
</span><span id="preprocess-380"><a href="#preprocess-380"><span class="linenos">380</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="preprocess-381"><a href="#preprocess-381"><span class="linenos">381</span></a><span class="sd"> transforms: sequence of transform functions. These will be called in order.</span>
|
||||
</span><span id="preprocess-382"><a href="#preprocess-382"><span class="linenos">382</span></a>
|
||||
</span><span id="preprocess-383"><a href="#preprocess-383"><span class="linenos">383</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="preprocess-384"><a href="#preprocess-384"><span class="linenos">384</span></a><span class="sd"> Function that can be used as a generator transform.</span>
|
||||
</span><span id="preprocess-385"><a href="#preprocess-385"><span class="linenos">385</span></a><span class="sd"> """</span>
|
||||
</span><span id="preprocess-386"><a href="#preprocess-386"><span class="linenos">386</span></a>
|
||||
</span><span id="preprocess-387"><a href="#preprocess-387"><span class="linenos">387</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-388"><a href="#preprocess-388"><span class="linenos">388</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-389"><a href="#preprocess-389"><span class="linenos">389</span></a>
|
||||
</span><span id="preprocess-390"><a href="#preprocess-390"><span class="linenos">390</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">transforms</span><span class="p">[</span><span class="mi">0</span><span class="p">](</span><span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">())</span>
|
||||
</span><span id="preprocess-391"><a href="#preprocess-391"><span class="linenos">391</span></a> <span class="k">for</span> <span class="n">t</span> <span class="ow">in</span> <span class="n">transforms</span><span class="p">[</span><span class="mi">1</span><span class="p">:]:</span>
|
||||
</span><span id="preprocess-392"><a href="#preprocess-392"><span class="linenos">392</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">t</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="preprocess-393"><a href="#preprocess-393"><span class="linenos">393</span></a>
|
||||
</span><span id="preprocess-394"><a href="#preprocess-394"><span class="linenos">394</span></a> <span class="n">_sql_handler</span> <span class="o">=</span> <span class="nb">getattr</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">key</span> <span class="o">+</span> <span class="s2">"_sql"</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
|
||||
</span><span id="preprocess-395"><a href="#preprocess-395"><span class="linenos">395</span></a> <span class="k">if</span> <span class="n">_sql_handler</span><span class="p">:</span>
|
||||
</span><span id="preprocess-396"><a href="#preprocess-396"><span class="linenos">396</span></a> <span class="k">return</span> <span class="n">_sql_handler</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="preprocess-397"><a href="#preprocess-397"><span class="linenos">397</span></a>
|
||||
</span><span id="preprocess-398"><a href="#preprocess-398"><span class="linenos">398</span></a> <span class="n">transforms_handler</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="nb">type</span><span class="p">(</span><span class="n">expression</span><span class="p">))</span>
|
||||
</span><span id="preprocess-399"><a href="#preprocess-399"><span class="linenos">399</span></a> <span class="k">if</span> <span class="n">transforms_handler</span><span class="p">:</span>
|
||||
</span><span id="preprocess-400"><a href="#preprocess-400"><span class="linenos">400</span></a> <span class="k">if</span> <span class="n">expression_type</span> <span class="ow">is</span> <span class="nb">type</span><span class="p">(</span><span class="n">expression</span><span class="p">):</span>
|
||||
</span><span id="preprocess-401"><a href="#preprocess-401"><span class="linenos">401</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">Func</span><span class="p">):</span>
|
||||
</span><span id="preprocess-402"><a href="#preprocess-402"><span class="linenos">402</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">function_fallback_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="preprocess-403"><a href="#preprocess-403"><span class="linenos">403</span></a>
|
||||
</span><span id="preprocess-404"><a href="#preprocess-404"><span class="linenos">404</span></a> <span class="c1"># Ensures we don't enter an infinite loop. This can happen when the original expression</span>
|
||||
</span><span id="preprocess-405"><a href="#preprocess-405"><span class="linenos">405</span></a> <span class="c1"># has the same type as the final expression and there's no _sql method available for it,</span>
|
||||
</span><span id="preprocess-406"><a href="#preprocess-406"><span class="linenos">406</span></a> <span class="c1"># because then it'd re-enter _to_sql.</span>
|
||||
</span><span id="preprocess-407"><a href="#preprocess-407"><span class="linenos">407</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
|
||||
</span><span id="preprocess-408"><a href="#preprocess-408"><span class="linenos">408</span></a> <span class="sa">f</span><span class="s2">"Expression type </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2"> requires a _sql method in order to be transformed."</span>
|
||||
</span><span id="preprocess-409"><a href="#preprocess-409"><span class="linenos">409</span></a> <span class="p">)</span>
|
||||
</span><span id="preprocess-410"><a href="#preprocess-410"><span class="linenos">410</span></a>
|
||||
</span><span id="preprocess-411"><a href="#preprocess-411"><span class="linenos">411</span></a> <span class="k">return</span> <span class="n">transforms_handler</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="preprocess-412"><a href="#preprocess-412"><span class="linenos">412</span></a>
|
||||
</span><span id="preprocess-413"><a href="#preprocess-413"><span class="linenos">413</span></a> <span class="c1"># Ensures we don't enter an infinite loop. This can happen when the original expression</span>
|
||||
</span><span id="preprocess-414"><a href="#preprocess-414"><span class="linenos">414</span></a> <span class="c1"># has the same type as the final expression and there's no _sql method available for it,</span>
|
||||
</span><span id="preprocess-415"><a href="#preprocess-415"><span class="linenos">415</span></a> <span class="c1"># because then it'd re-enter _to_sql.</span>
|
||||
</span><span id="preprocess-416"><a href="#preprocess-416"><span class="linenos">416</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
|
||||
</span><span id="preprocess-417"><a href="#preprocess-417"><span class="linenos">417</span></a> <span class="sa">f</span><span class="s2">"Expression type </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2"> requires a _sql method in order to be transformed."</span>
|
||||
</span><span id="preprocess-418"><a href="#preprocess-418"><span class="linenos">418</span></a> <span class="p">)</span>
|
||||
</span><span id="preprocess-419"><a href="#preprocess-419"><span class="linenos">419</span></a>
|
||||
</span><span id="preprocess-420"><a href="#preprocess-420"><span class="linenos">420</span></a> <span class="k">return</span> <span class="n">transforms_handler</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="preprocess-421"><a href="#preprocess-421"><span class="linenos">421</span></a>
|
||||
</span><span id="preprocess-422"><a href="#preprocess-422"><span class="linenos">422</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported expression type </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
</span><span id="preprocess-423"><a href="#preprocess-423"><span class="linenos">423</span></a>
|
||||
</span><span id="preprocess-424"><a href="#preprocess-424"><span class="linenos">424</span></a> <span class="k">return</span> <span class="n">_to_sql</span>
|
||||
</span><span id="preprocess-413"><a href="#preprocess-413"><span class="linenos">413</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Unsupported expression type </span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="vm">__class__</span><span class="o">.</span><span class="vm">__name__</span><span class="si">}</span><span class="s2">."</span><span class="p">)</span>
|
||||
</span><span id="preprocess-414"><a href="#preprocess-414"><span class="linenos">414</span></a>
|
||||
</span><span id="preprocess-415"><a href="#preprocess-415"><span class="linenos">415</span></a> <span class="k">return</span> <span class="n">_to_sql</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue