Merging upstream version 22.2.0.
Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
parent
b13ba670fd
commit
2c28c49d7e
148 changed files with 68457 additions and 63176 deletions
|
@ -90,6 +90,9 @@
|
|||
<li>
|
||||
<a class="function" href="#move_partitioned_by_to_schema_columns">move_partitioned_by_to_schema_columns</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="function" href="#struct_kv_to_alias">struct_kv_to_alias</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="function" href="#preprocess">preprocess</a>
|
||||
</li>
|
||||
|
@ -665,7 +668,7 @@
|
|||
</span><span id="L-547"><a href="#L-547"><span class="linenos">547</span></a> <span class="n">prop</span>
|
||||
</span><span id="L-548"><a href="#L-548"><span class="linenos">548</span></a> <span class="ow">and</span> <span class="n">prop</span><span class="o">.</span><span class="n">this</span>
|
||||
</span><span id="L-549"><a href="#L-549"><span class="linenos">549</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">prop</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">Schema</span><span class="p">)</span>
|
||||
</span><span id="L-550"><a href="#L-550"><span class="linenos">550</span></a> <span class="ow">and</span> <span class="nb">all</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">)</span> <span class="ow">and</span> <span class="n">e</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">"kind"</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">prop</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span>
|
||||
</span><span id="L-550"><a href="#L-550"><span class="linenos">550</span></a> <span class="ow">and</span> <span class="nb">all</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">)</span> <span class="ow">and</span> <span class="n">e</span><span class="o">.</span><span class="n">kind</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">prop</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span>
|
||||
</span><span id="L-551"><a href="#L-551"><span class="linenos">551</span></a> <span class="p">):</span>
|
||||
</span><span id="L-552"><a href="#L-552"><span class="linenos">552</span></a> <span class="n">prop_this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">(</span>
|
||||
</span><span id="L-553"><a href="#L-553"><span class="linenos">553</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">prop</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">expressions</span><span class="p">]</span>
|
||||
|
@ -678,50 +681,66 @@
|
|||
</span><span id="L-560"><a href="#L-560"><span class="linenos">560</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-561"><a href="#L-561"><span class="linenos">561</span></a>
|
||||
</span><span id="L-562"><a href="#L-562"><span class="linenos">562</span></a>
|
||||
</span><span id="L-563"><a href="#L-563"><span class="linenos">563</span></a><span class="k">def</span> <span class="nf">preprocess</span><span class="p">(</span>
|
||||
</span><span id="L-564"><a href="#L-564"><span class="linenos">564</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-565"><a href="#L-565"><span class="linenos">565</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-566"><a href="#L-566"><span class="linenos">566</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-567"><a href="#L-567"><span class="linenos">567</span></a><span class="sd"> Creates a new transform by chaining a sequence of transformations and converts the resulting</span>
|
||||
</span><span id="L-568"><a href="#L-568"><span class="linenos">568</span></a><span class="sd"> expression to SQL, using either the "_sql" method corresponding to the resulting expression,</span>
|
||||
</span><span id="L-569"><a href="#L-569"><span class="linenos">569</span></a><span class="sd"> or the appropriate `Generator.TRANSFORMS` function (when applicable -- see below).</span>
|
||||
</span><span id="L-570"><a href="#L-570"><span class="linenos">570</span></a>
|
||||
</span><span id="L-571"><a href="#L-571"><span class="linenos">571</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="L-572"><a href="#L-572"><span class="linenos">572</span></a><span class="sd"> transforms: sequence of transform functions. These will be called in order.</span>
|
||||
</span><span id="L-573"><a href="#L-573"><span class="linenos">573</span></a>
|
||||
</span><span id="L-574"><a href="#L-574"><span class="linenos">574</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="L-575"><a href="#L-575"><span class="linenos">575</span></a><span class="sd"> Function that can be used as a generator transform.</span>
|
||||
</span><span id="L-576"><a href="#L-576"><span class="linenos">576</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-563"><a href="#L-563"><span class="linenos">563</span></a><span class="k">def</span> <span class="nf">struct_kv_to_alias</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="L-564"><a href="#L-564"><span class="linenos">564</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-565"><a href="#L-565"><span class="linenos">565</span></a><span class="sd"> Convert struct arguments to aliases: STRUCT(1 AS y) .</span>
|
||||
</span><span id="L-566"><a href="#L-566"><span class="linenos">566</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-567"><a href="#L-567"><span class="linenos">567</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">):</span>
|
||||
</span><span id="L-568"><a href="#L-568"><span class="linenos">568</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span>
|
||||
</span><span id="L-569"><a href="#L-569"><span class="linenos">569</span></a> <span class="s2">"expressions"</span><span class="p">,</span>
|
||||
</span><span id="L-570"><a href="#L-570"><span class="linenos">570</span></a> <span class="p">[</span>
|
||||
</span><span id="L-571"><a href="#L-571"><span class="linenos">571</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">)</span> <span class="k">else</span> <span class="n">e</span>
|
||||
</span><span id="L-572"><a href="#L-572"><span class="linenos">572</span></a> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span>
|
||||
</span><span id="L-573"><a href="#L-573"><span class="linenos">573</span></a> <span class="p">],</span>
|
||||
</span><span id="L-574"><a href="#L-574"><span class="linenos">574</span></a> <span class="p">)</span>
|
||||
</span><span id="L-575"><a href="#L-575"><span class="linenos">575</span></a>
|
||||
</span><span id="L-576"><a href="#L-576"><span class="linenos">576</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span><span id="L-577"><a href="#L-577"><span class="linenos">577</span></a>
|
||||
</span><span id="L-578"><a href="#L-578"><span class="linenos">578</span></a> <span 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-579"><a href="#L-579"><span class="linenos">579</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-580"><a href="#L-580"><span class="linenos">580</span></a>
|
||||
</span><span id="L-581"><a href="#L-581"><span class="linenos">581</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="p">)</span>
|
||||
</span><span id="L-582"><a href="#L-582"><span class="linenos">582</span></a> <span class="k">for</span> <span class="n">transform</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-583"><a href="#L-583"><span class="linenos">583</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="L-584"><a href="#L-584"><span class="linenos">584</span></a>
|
||||
</span><span id="L-585"><a href="#L-585"><span class="linenos">585</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-586"><a href="#L-586"><span class="linenos">586</span></a> <span class="k">if</span> <span class="n">_sql_handler</span><span class="p">:</span>
|
||||
</span><span id="L-587"><a href="#L-587"><span class="linenos">587</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-588"><a href="#L-588"><span class="linenos">588</span></a>
|
||||
</span><span id="L-589"><a href="#L-589"><span class="linenos">589</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-590"><a href="#L-590"><span class="linenos">590</span></a> <span class="k">if</span> <span class="n">transforms_handler</span><span class="p">:</span>
|
||||
</span><span id="L-591"><a href="#L-591"><span class="linenos">591</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-592"><a href="#L-592"><span class="linenos">592</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-593"><a href="#L-593"><span class="linenos">593</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-594"><a href="#L-594"><span class="linenos">594</span></a>
|
||||
</span><span id="L-595"><a href="#L-595"><span class="linenos">595</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-596"><a href="#L-596"><span class="linenos">596</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-597"><a href="#L-597"><span class="linenos">597</span></a> <span class="c1"># because then it'd re-enter _to_sql.</span>
|
||||
</span><span id="L-598"><a href="#L-598"><span class="linenos">598</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
|
||||
</span><span id="L-599"><a href="#L-599"><span class="linenos">599</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-600"><a href="#L-600"><span class="linenos">600</span></a> <span class="p">)</span>
|
||||
</span><span id="L-601"><a href="#L-601"><span class="linenos">601</span></a>
|
||||
</span><span id="L-602"><a href="#L-602"><span class="linenos">602</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-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">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-605"><a href="#L-605"><span class="linenos">605</span></a>
|
||||
</span><span id="L-606"><a href="#L-606"><span class="linenos">606</span></a> <span class="k">return</span> <span class="n">_to_sql</span>
|
||||
</span><span id="L-578"><a href="#L-578"><span class="linenos">578</span></a>
|
||||
</span><span id="L-579"><a href="#L-579"><span class="linenos">579</span></a><span class="k">def</span> <span class="nf">preprocess</span><span class="p">(</span>
|
||||
</span><span id="L-580"><a href="#L-580"><span class="linenos">580</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-581"><a href="#L-581"><span class="linenos">581</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-582"><a href="#L-582"><span class="linenos">582</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="L-583"><a href="#L-583"><span class="linenos">583</span></a><span class="sd"> Creates a new transform by chaining a sequence of transformations and converts the resulting</span>
|
||||
</span><span id="L-584"><a href="#L-584"><span class="linenos">584</span></a><span class="sd"> expression to SQL, using either the "_sql" method corresponding to the resulting expression,</span>
|
||||
</span><span id="L-585"><a href="#L-585"><span class="linenos">585</span></a><span class="sd"> or the appropriate `Generator.TRANSFORMS` function (when applicable -- see below).</span>
|
||||
</span><span id="L-586"><a href="#L-586"><span class="linenos">586</span></a>
|
||||
</span><span id="L-587"><a href="#L-587"><span class="linenos">587</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="L-588"><a href="#L-588"><span class="linenos">588</span></a><span class="sd"> transforms: sequence of transform functions. These will be called in order.</span>
|
||||
</span><span id="L-589"><a href="#L-589"><span class="linenos">589</span></a>
|
||||
</span><span id="L-590"><a href="#L-590"><span class="linenos">590</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="L-591"><a href="#L-591"><span class="linenos">591</span></a><span class="sd"> Function that can be used as a generator transform.</span>
|
||||
</span><span id="L-592"><a href="#L-592"><span class="linenos">592</span></a><span class="sd"> """</span>
|
||||
</span><span id="L-593"><a href="#L-593"><span class="linenos">593</span></a>
|
||||
</span><span id="L-594"><a href="#L-594"><span class="linenos">594</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-595"><a href="#L-595"><span class="linenos">595</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-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 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="p">)</span>
|
||||
</span><span id="L-598"><a href="#L-598"><span class="linenos">598</span></a> <span class="k">for</span> <span class="n">transform</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-599"><a href="#L-599"><span class="linenos">599</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</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><span id="L-601"><a href="#L-601"><span class="linenos">601</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-602"><a href="#L-602"><span class="linenos">602</span></a> <span class="k">if</span> <span class="n">_sql_handler</span><span class="p">:</span>
|
||||
</span><span id="L-603"><a href="#L-603"><span class="linenos">603</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-604"><a href="#L-604"><span class="linenos">604</span></a>
|
||||
</span><span id="L-605"><a href="#L-605"><span class="linenos">605</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-606"><a href="#L-606"><span class="linenos">606</span></a> <span class="k">if</span> <span class="n">transforms_handler</span><span class="p">:</span>
|
||||
</span><span id="L-607"><a href="#L-607"><span class="linenos">607</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-608"><a href="#L-608"><span class="linenos">608</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-609"><a href="#L-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><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="c1"># Ensures we don't enter an infinite loop. This can happen when the original expression</span>
|
||||
</span><span id="L-612"><a href="#L-612"><span class="linenos">612</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-613"><a href="#L-613"><span class="linenos">613</span></a> <span class="c1"># because then it'd re-enter _to_sql.</span>
|
||||
</span><span id="L-614"><a href="#L-614"><span class="linenos">614</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
|
||||
</span><span id="L-615"><a href="#L-615"><span class="linenos">615</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-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 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-619"><a href="#L-619"><span class="linenos">619</span></a>
|
||||
</span><span id="L-620"><a href="#L-620"><span class="linenos">620</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-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 class="k">return</span> <span class="n">_to_sql</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
|
@ -1643,7 +1662,7 @@ The corresponding columns are removed from the create statement.</p>
|
|||
</span><span id="move_partitioned_by_to_schema_columns-548"><a href="#move_partitioned_by_to_schema_columns-548"><span class="linenos">548</span></a> <span class="n">prop</span>
|
||||
</span><span id="move_partitioned_by_to_schema_columns-549"><a href="#move_partitioned_by_to_schema_columns-549"><span class="linenos">549</span></a> <span class="ow">and</span> <span class="n">prop</span><span class="o">.</span><span class="n">this</span>
|
||||
</span><span id="move_partitioned_by_to_schema_columns-550"><a href="#move_partitioned_by_to_schema_columns-550"><span class="linenos">550</span></a> <span class="ow">and</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">prop</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">Schema</span><span class="p">)</span>
|
||||
</span><span id="move_partitioned_by_to_schema_columns-551"><a href="#move_partitioned_by_to_schema_columns-551"><span class="linenos">551</span></a> <span class="ow">and</span> <span class="nb">all</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">)</span> <span class="ow">and</span> <span class="n">e</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">"kind"</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">prop</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span>
|
||||
</span><span id="move_partitioned_by_to_schema_columns-551"><a href="#move_partitioned_by_to_schema_columns-551"><span class="linenos">551</span></a> <span class="ow">and</span> <span class="nb">all</span><span class="p">(</span><span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">)</span> <span class="ow">and</span> <span class="n">e</span><span class="o">.</span><span class="n">kind</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">prop</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">expressions</span><span class="p">)</span>
|
||||
</span><span id="move_partitioned_by_to_schema_columns-552"><a href="#move_partitioned_by_to_schema_columns-552"><span class="linenos">552</span></a> <span class="p">):</span>
|
||||
</span><span id="move_partitioned_by_to_schema_columns-553"><a href="#move_partitioned_by_to_schema_columns-553"><span class="linenos">553</span></a> <span class="n">prop_this</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Tuple</span><span class="p">(</span>
|
||||
</span><span id="move_partitioned_by_to_schema_columns-554"><a href="#move_partitioned_by_to_schema_columns-554"><span class="linenos">554</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">to_identifier</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">prop</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">expressions</span><span class="p">]</span>
|
||||
|
@ -1663,6 +1682,39 @@ The corresponding columns are removed from the create statement.</p>
|
|||
</div>
|
||||
|
||||
|
||||
</section>
|
||||
<section id="struct_kv_to_alias">
|
||||
<input id="struct_kv_to_alias-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">struct_kv_to_alias</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="struct_kv_to_alias-view-source"><span>View Source</span></label>
|
||||
|
||||
</div>
|
||||
<a class="headerlink" href="#struct_kv_to_alias"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="struct_kv_to_alias-564"><a href="#struct_kv_to_alias-564"><span class="linenos">564</span></a><span class="k">def</span> <span class="nf">struct_kv_to_alias</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-></span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
|
||||
</span><span id="struct_kv_to_alias-565"><a href="#struct_kv_to_alias-565"><span class="linenos">565</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="struct_kv_to_alias-566"><a href="#struct_kv_to_alias-566"><span class="linenos">566</span></a><span class="sd"> Convert struct arguments to aliases: STRUCT(1 AS y) .</span>
|
||||
</span><span id="struct_kv_to_alias-567"><a href="#struct_kv_to_alias-567"><span class="linenos">567</span></a><span class="sd"> """</span>
|
||||
</span><span id="struct_kv_to_alias-568"><a href="#struct_kv_to_alias-568"><span class="linenos">568</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">):</span>
|
||||
</span><span id="struct_kv_to_alias-569"><a href="#struct_kv_to_alias-569"><span class="linenos">569</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span>
|
||||
</span><span id="struct_kv_to_alias-570"><a href="#struct_kv_to_alias-570"><span class="linenos">570</span></a> <span class="s2">"expressions"</span><span class="p">,</span>
|
||||
</span><span id="struct_kv_to_alias-571"><a href="#struct_kv_to_alias-571"><span class="linenos">571</span></a> <span class="p">[</span>
|
||||
</span><span id="struct_kv_to_alias-572"><a href="#struct_kv_to_alias-572"><span class="linenos">572</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">alias_</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">)</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">PropertyEQ</span><span class="p">)</span> <span class="k">else</span> <span class="n">e</span>
|
||||
</span><span id="struct_kv_to_alias-573"><a href="#struct_kv_to_alias-573"><span class="linenos">573</span></a> <span class="k">for</span> <span class="n">e</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span>
|
||||
</span><span id="struct_kv_to_alias-574"><a href="#struct_kv_to_alias-574"><span class="linenos">574</span></a> <span class="p">],</span>
|
||||
</span><span id="struct_kv_to_alias-575"><a href="#struct_kv_to_alias-575"><span class="linenos">575</span></a> <span class="p">)</span>
|
||||
</span><span id="struct_kv_to_alias-576"><a href="#struct_kv_to_alias-576"><span class="linenos">576</span></a>
|
||||
</span><span id="struct_kv_to_alias-577"><a href="#struct_kv_to_alias-577"><span class="linenos">577</span></a> <span class="k">return</span> <span class="n">expression</span>
|
||||
</span></pre></div>
|
||||
|
||||
|
||||
<div class="docstring"><p>Convert struct arguments to aliases: STRUCT(1 AS y) .</p>
|
||||
</div>
|
||||
|
||||
|
||||
</section>
|
||||
<section id="preprocess">
|
||||
<input id="preprocess-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
||||
|
@ -1675,50 +1727,50 @@ The corresponding columns are removed from the create statement.</p>
|
|||
|
||||
</div>
|
||||
<a class="headerlink" href="#preprocess"></a>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="preprocess-564"><a href="#preprocess-564"><span class="linenos">564</span></a><span class="k">def</span> <span class="nf">preprocess</span><span class="p">(</span>
|
||||
</span><span id="preprocess-565"><a href="#preprocess-565"><span class="linenos">565</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-566"><a href="#preprocess-566"><span class="linenos">566</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-567"><a href="#preprocess-567"><span class="linenos">567</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="preprocess-568"><a href="#preprocess-568"><span class="linenos">568</span></a><span class="sd"> Creates a new transform by chaining a sequence of transformations and converts the resulting</span>
|
||||
</span><span id="preprocess-569"><a href="#preprocess-569"><span class="linenos">569</span></a><span class="sd"> expression to SQL, using either the "_sql" method corresponding to the resulting expression,</span>
|
||||
</span><span id="preprocess-570"><a href="#preprocess-570"><span class="linenos">570</span></a><span class="sd"> or the appropriate `Generator.TRANSFORMS` function (when applicable -- see below).</span>
|
||||
</span><span id="preprocess-571"><a href="#preprocess-571"><span class="linenos">571</span></a>
|
||||
</span><span id="preprocess-572"><a href="#preprocess-572"><span class="linenos">572</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="preprocess-573"><a href="#preprocess-573"><span class="linenos">573</span></a><span class="sd"> transforms: sequence of transform functions. These will be called in order.</span>
|
||||
</span><span id="preprocess-574"><a href="#preprocess-574"><span class="linenos">574</span></a>
|
||||
</span><span id="preprocess-575"><a href="#preprocess-575"><span class="linenos">575</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="preprocess-576"><a href="#preprocess-576"><span class="linenos">576</span></a><span class="sd"> Function that can be used as a generator transform.</span>
|
||||
</span><span id="preprocess-577"><a href="#preprocess-577"><span class="linenos">577</span></a><span class="sd"> """</span>
|
||||
</span><span id="preprocess-578"><a href="#preprocess-578"><span class="linenos">578</span></a>
|
||||
</span><span id="preprocess-579"><a href="#preprocess-579"><span class="linenos">579</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-580"><a href="#preprocess-580"><span class="linenos">580</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-581"><a href="#preprocess-581"><span class="linenos">581</span></a>
|
||||
</span><span id="preprocess-582"><a href="#preprocess-582"><span class="linenos">582</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="p">)</span>
|
||||
</span><span id="preprocess-583"><a href="#preprocess-583"><span class="linenos">583</span></a> <span class="k">for</span> <span class="n">transform</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-584"><a href="#preprocess-584"><span class="linenos">584</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="preprocess-585"><a href="#preprocess-585"><span class="linenos">585</span></a>
|
||||
</span><span id="preprocess-586"><a href="#preprocess-586"><span class="linenos">586</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-587"><a href="#preprocess-587"><span class="linenos">587</span></a> <span class="k">if</span> <span class="n">_sql_handler</span><span class="p">:</span>
|
||||
</span><span id="preprocess-588"><a href="#preprocess-588"><span class="linenos">588</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-589"><a href="#preprocess-589"><span class="linenos">589</span></a>
|
||||
</span><span id="preprocess-590"><a href="#preprocess-590"><span class="linenos">590</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-591"><a href="#preprocess-591"><span class="linenos">591</span></a> <span class="k">if</span> <span class="n">transforms_handler</span><span class="p">:</span>
|
||||
</span><span id="preprocess-592"><a href="#preprocess-592"><span class="linenos">592</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-593"><a href="#preprocess-593"><span class="linenos">593</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-594"><a href="#preprocess-594"><span class="linenos">594</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-595"><a href="#preprocess-595"><span class="linenos">595</span></a>
|
||||
</span><span id="preprocess-596"><a href="#preprocess-596"><span class="linenos">596</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-597"><a href="#preprocess-597"><span class="linenos">597</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-598"><a href="#preprocess-598"><span class="linenos">598</span></a> <span class="c1"># because then it'd re-enter _to_sql.</span>
|
||||
</span><span id="preprocess-599"><a href="#preprocess-599"><span class="linenos">599</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
|
||||
</span><span id="preprocess-600"><a href="#preprocess-600"><span class="linenos">600</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-601"><a href="#preprocess-601"><span class="linenos">601</span></a> <span class="p">)</span>
|
||||
</span><span id="preprocess-602"><a href="#preprocess-602"><span class="linenos">602</span></a>
|
||||
</span><span id="preprocess-603"><a href="#preprocess-603"><span class="linenos">603</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-604"><a href="#preprocess-604"><span class="linenos">604</span></a>
|
||||
</span><span id="preprocess-605"><a href="#preprocess-605"><span class="linenos">605</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-606"><a href="#preprocess-606"><span class="linenos">606</span></a>
|
||||
</span><span id="preprocess-607"><a href="#preprocess-607"><span class="linenos">607</span></a> <span class="k">return</span> <span class="n">_to_sql</span>
|
||||
<div class="pdoc-code codehilite"><pre><span></span><span id="preprocess-580"><a href="#preprocess-580"><span class="linenos">580</span></a><span class="k">def</span> <span class="nf">preprocess</span><span class="p">(</span>
|
||||
</span><span id="preprocess-581"><a href="#preprocess-581"><span class="linenos">581</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-582"><a href="#preprocess-582"><span class="linenos">582</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-583"><a href="#preprocess-583"><span class="linenos">583</span></a><span class="w"> </span><span class="sd">"""</span>
|
||||
</span><span id="preprocess-584"><a href="#preprocess-584"><span class="linenos">584</span></a><span class="sd"> Creates a new transform by chaining a sequence of transformations and converts the resulting</span>
|
||||
</span><span id="preprocess-585"><a href="#preprocess-585"><span class="linenos">585</span></a><span class="sd"> expression to SQL, using either the "_sql" method corresponding to the resulting expression,</span>
|
||||
</span><span id="preprocess-586"><a href="#preprocess-586"><span class="linenos">586</span></a><span class="sd"> or the appropriate `Generator.TRANSFORMS` function (when applicable -- see below).</span>
|
||||
</span><span id="preprocess-587"><a href="#preprocess-587"><span class="linenos">587</span></a>
|
||||
</span><span id="preprocess-588"><a href="#preprocess-588"><span class="linenos">588</span></a><span class="sd"> Args:</span>
|
||||
</span><span id="preprocess-589"><a href="#preprocess-589"><span class="linenos">589</span></a><span class="sd"> transforms: sequence of transform functions. These will be called in order.</span>
|
||||
</span><span id="preprocess-590"><a href="#preprocess-590"><span class="linenos">590</span></a>
|
||||
</span><span id="preprocess-591"><a href="#preprocess-591"><span class="linenos">591</span></a><span class="sd"> Returns:</span>
|
||||
</span><span id="preprocess-592"><a href="#preprocess-592"><span class="linenos">592</span></a><span class="sd"> Function that can be used as a generator transform.</span>
|
||||
</span><span id="preprocess-593"><a href="#preprocess-593"><span class="linenos">593</span></a><span class="sd"> """</span>
|
||||
</span><span id="preprocess-594"><a href="#preprocess-594"><span class="linenos">594</span></a>
|
||||
</span><span id="preprocess-595"><a href="#preprocess-595"><span class="linenos">595</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-596"><a href="#preprocess-596"><span class="linenos">596</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-597"><a href="#preprocess-597"><span class="linenos">597</span></a>
|
||||
</span><span id="preprocess-598"><a href="#preprocess-598"><span class="linenos">598</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="p">)</span>
|
||||
</span><span id="preprocess-599"><a href="#preprocess-599"><span class="linenos">599</span></a> <span class="k">for</span> <span class="n">transform</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-600"><a href="#preprocess-600"><span class="linenos">600</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">transform</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
|
||||
</span><span id="preprocess-601"><a href="#preprocess-601"><span class="linenos">601</span></a>
|
||||
</span><span id="preprocess-602"><a href="#preprocess-602"><span class="linenos">602</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-603"><a href="#preprocess-603"><span class="linenos">603</span></a> <span class="k">if</span> <span class="n">_sql_handler</span><span class="p">:</span>
|
||||
</span><span id="preprocess-604"><a href="#preprocess-604"><span class="linenos">604</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-605"><a href="#preprocess-605"><span class="linenos">605</span></a>
|
||||
</span><span id="preprocess-606"><a href="#preprocess-606"><span class="linenos">606</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-607"><a href="#preprocess-607"><span class="linenos">607</span></a> <span class="k">if</span> <span class="n">transforms_handler</span><span class="p">:</span>
|
||||
</span><span id="preprocess-608"><a href="#preprocess-608"><span class="linenos">608</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-609"><a href="#preprocess-609"><span class="linenos">609</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-610"><a href="#preprocess-610"><span class="linenos">610</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-611"><a href="#preprocess-611"><span class="linenos">611</span></a>
|
||||
</span><span id="preprocess-612"><a href="#preprocess-612"><span class="linenos">612</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-613"><a href="#preprocess-613"><span class="linenos">613</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-614"><a href="#preprocess-614"><span class="linenos">614</span></a> <span class="c1"># because then it'd re-enter _to_sql.</span>
|
||||
</span><span id="preprocess-615"><a href="#preprocess-615"><span class="linenos">615</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
|
||||
</span><span id="preprocess-616"><a href="#preprocess-616"><span class="linenos">616</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-617"><a href="#preprocess-617"><span class="linenos">617</span></a> <span class="p">)</span>
|
||||
</span><span id="preprocess-618"><a href="#preprocess-618"><span class="linenos">618</span></a>
|
||||
</span><span id="preprocess-619"><a href="#preprocess-619"><span class="linenos">619</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-620"><a href="#preprocess-620"><span class="linenos">620</span></a>
|
||||
</span><span id="preprocess-621"><a href="#preprocess-621"><span class="linenos">621</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-622"><a href="#preprocess-622"><span class="linenos">622</span></a>
|
||||
</span><span id="preprocess-623"><a href="#preprocess-623"><span class="linenos">623</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