summaryrefslogtreecommitdiffstats
path: root/docs/sqlglot/expressions.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/sqlglot/expressions.html')
-rw-r--r--docs/sqlglot/expressions.html1000
1 files changed, 501 insertions, 499 deletions
diff --git a/docs/sqlglot/expressions.html b/docs/sqlglot/expressions.html
index d240af2..e9f8952 100644
--- a/docs/sqlglot/expressions.html
+++ b/docs/sqlglot/expressions.html
@@ -14009,268 +14009,269 @@ SQL expressions, such as <code><a href="#select">select</a></code>.</p>
</span><span id="L-6894"><a href="#L-6894"><span class="linenos">6894</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span>
</span><span id="L-6895"><a href="#L-6895"><span class="linenos">6895</span></a> <span class="n">new_name</span><span class="p">,</span>
</span><span id="L-6896"><a href="#L-6896"><span class="linenos">6896</span></a> <span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</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">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">TABLE_PARTS</span><span class="p">},</span>
-</span><span id="L-6897"><a href="#L-6897"><span class="linenos">6897</span></a> <span class="p">)</span>
-</span><span id="L-6898"><a href="#L-6898"><span class="linenos">6898</span></a> <span class="n">table</span><span class="o">.</span><span class="n">add_comments</span><span class="p">([</span><span class="n">original</span><span class="p">])</span>
-</span><span id="L-6899"><a href="#L-6899"><span class="linenos">6899</span></a> <span class="k">return</span> <span class="n">table</span>
-</span><span id="L-6900"><a href="#L-6900"><span class="linenos">6900</span></a> <span class="k">return</span> <span class="n">node</span>
-</span><span id="L-6901"><a href="#L-6901"><span class="linenos">6901</span></a>
-</span><span id="L-6902"><a href="#L-6902"><span class="linenos">6902</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_tables</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span>
-</span><span id="L-6903"><a href="#L-6903"><span class="linenos">6903</span></a>
+</span><span id="L-6897"><a href="#L-6897"><span class="linenos">6897</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span>
+</span><span id="L-6898"><a href="#L-6898"><span class="linenos">6898</span></a> <span class="p">)</span>
+</span><span id="L-6899"><a href="#L-6899"><span class="linenos">6899</span></a> <span class="n">table</span><span class="o">.</span><span class="n">add_comments</span><span class="p">([</span><span class="n">original</span><span class="p">])</span>
+</span><span id="L-6900"><a href="#L-6900"><span class="linenos">6900</span></a> <span class="k">return</span> <span class="n">table</span>
+</span><span id="L-6901"><a href="#L-6901"><span class="linenos">6901</span></a> <span class="k">return</span> <span class="n">node</span>
+</span><span id="L-6902"><a href="#L-6902"><span class="linenos">6902</span></a>
+</span><span id="L-6903"><a href="#L-6903"><span class="linenos">6903</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_tables</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span>
</span><span id="L-6904"><a href="#L-6904"><span class="linenos">6904</span></a>
-</span><span id="L-6905"><a href="#L-6905"><span class="linenos">6905</span></a><span class="k">def</span> <span class="nf">replace_placeholders</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Expression</span><span class="p">:</span>
-</span><span id="L-6906"><a href="#L-6906"><span class="linenos">6906</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Replace placeholders in an expression.</span>
-</span><span id="L-6907"><a href="#L-6907"><span class="linenos">6907</span></a>
-</span><span id="L-6908"><a href="#L-6908"><span class="linenos">6908</span></a><span class="sd"> Args:</span>
-</span><span id="L-6909"><a href="#L-6909"><span class="linenos">6909</span></a><span class="sd"> expression: expression node to be transformed and replaced.</span>
-</span><span id="L-6910"><a href="#L-6910"><span class="linenos">6910</span></a><span class="sd"> args: positional names that will substitute unnamed placeholders in the given order.</span>
-</span><span id="L-6911"><a href="#L-6911"><span class="linenos">6911</span></a><span class="sd"> kwargs: keyword arguments that will substitute named placeholders.</span>
-</span><span id="L-6912"><a href="#L-6912"><span class="linenos">6912</span></a>
-</span><span id="L-6913"><a href="#L-6913"><span class="linenos">6913</span></a><span class="sd"> Examples:</span>
-</span><span id="L-6914"><a href="#L-6914"><span class="linenos">6914</span></a><span class="sd"> &gt;&gt;&gt; from sqlglot import exp, parse_one</span>
-</span><span id="L-6915"><a href="#L-6915"><span class="linenos">6915</span></a><span class="sd"> &gt;&gt;&gt; replace_placeholders(</span>
-</span><span id="L-6916"><a href="#L-6916"><span class="linenos">6916</span></a><span class="sd"> ... parse_one(&quot;select * from :tbl where ? = ?&quot;),</span>
-</span><span id="L-6917"><a href="#L-6917"><span class="linenos">6917</span></a><span class="sd"> ... exp.to_identifier(&quot;str_col&quot;), &quot;b&quot;, tbl=exp.to_identifier(&quot;foo&quot;)</span>
-</span><span id="L-6918"><a href="#L-6918"><span class="linenos">6918</span></a><span class="sd"> ... ).sql()</span>
-</span><span id="L-6919"><a href="#L-6919"><span class="linenos">6919</span></a><span class="sd"> &quot;SELECT * FROM foo WHERE str_col = &#39;b&#39;&quot;</span>
-</span><span id="L-6920"><a href="#L-6920"><span class="linenos">6920</span></a>
-</span><span id="L-6921"><a href="#L-6921"><span class="linenos">6921</span></a><span class="sd"> Returns:</span>
-</span><span id="L-6922"><a href="#L-6922"><span class="linenos">6922</span></a><span class="sd"> The mapped expression.</span>
-</span><span id="L-6923"><a href="#L-6923"><span class="linenos">6923</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="L-6924"><a href="#L-6924"><span class="linenos">6924</span></a>
-</span><span id="L-6925"><a href="#L-6925"><span class="linenos">6925</span></a> <span class="k">def</span> <span class="nf">_replace_placeholders</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Expression</span><span class="p">:</span>
-</span><span id="L-6926"><a href="#L-6926"><span class="linenos">6926</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">Placeholder</span><span class="p">):</span>
-</span><span id="L-6927"><a href="#L-6927"><span class="linenos">6927</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">:</span>
-</span><span id="L-6928"><a href="#L-6928"><span class="linenos">6928</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
-</span><span id="L-6929"><a href="#L-6929"><span class="linenos">6929</span></a> <span class="k">if</span> <span class="n">new_name</span><span class="p">:</span>
-</span><span id="L-6930"><a href="#L-6930"><span class="linenos">6930</span></a> <span class="k">return</span> <span class="n">convert</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span>
-</span><span id="L-6931"><a href="#L-6931"><span class="linenos">6931</span></a> <span class="k">else</span><span class="p">:</span>
-</span><span id="L-6932"><a href="#L-6932"><span class="linenos">6932</span></a> <span class="k">try</span><span class="p">:</span>
-</span><span id="L-6933"><a href="#L-6933"><span class="linenos">6933</span></a> <span class="k">return</span> <span class="n">convert</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">args</span><span class="p">))</span>
-</span><span id="L-6934"><a href="#L-6934"><span class="linenos">6934</span></a> <span class="k">except</span> <span class="ne">StopIteration</span><span class="p">:</span>
-</span><span id="L-6935"><a href="#L-6935"><span class="linenos">6935</span></a> <span class="k">pass</span>
-</span><span id="L-6936"><a href="#L-6936"><span class="linenos">6936</span></a> <span class="k">return</span> <span class="n">node</span>
-</span><span id="L-6937"><a href="#L-6937"><span class="linenos">6937</span></a>
-</span><span id="L-6938"><a href="#L-6938"><span class="linenos">6938</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_placeholders</span><span class="p">,</span> <span class="nb">iter</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
-</span><span id="L-6939"><a href="#L-6939"><span class="linenos">6939</span></a>
+</span><span id="L-6905"><a href="#L-6905"><span class="linenos">6905</span></a>
+</span><span id="L-6906"><a href="#L-6906"><span class="linenos">6906</span></a><span class="k">def</span> <span class="nf">replace_placeholders</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Expression</span><span class="p">:</span>
+</span><span id="L-6907"><a href="#L-6907"><span class="linenos">6907</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Replace placeholders in an expression.</span>
+</span><span id="L-6908"><a href="#L-6908"><span class="linenos">6908</span></a>
+</span><span id="L-6909"><a href="#L-6909"><span class="linenos">6909</span></a><span class="sd"> Args:</span>
+</span><span id="L-6910"><a href="#L-6910"><span class="linenos">6910</span></a><span class="sd"> expression: expression node to be transformed and replaced.</span>
+</span><span id="L-6911"><a href="#L-6911"><span class="linenos">6911</span></a><span class="sd"> args: positional names that will substitute unnamed placeholders in the given order.</span>
+</span><span id="L-6912"><a href="#L-6912"><span class="linenos">6912</span></a><span class="sd"> kwargs: keyword arguments that will substitute named placeholders.</span>
+</span><span id="L-6913"><a href="#L-6913"><span class="linenos">6913</span></a>
+</span><span id="L-6914"><a href="#L-6914"><span class="linenos">6914</span></a><span class="sd"> Examples:</span>
+</span><span id="L-6915"><a href="#L-6915"><span class="linenos">6915</span></a><span class="sd"> &gt;&gt;&gt; from sqlglot import exp, parse_one</span>
+</span><span id="L-6916"><a href="#L-6916"><span class="linenos">6916</span></a><span class="sd"> &gt;&gt;&gt; replace_placeholders(</span>
+</span><span id="L-6917"><a href="#L-6917"><span class="linenos">6917</span></a><span class="sd"> ... parse_one(&quot;select * from :tbl where ? = ?&quot;),</span>
+</span><span id="L-6918"><a href="#L-6918"><span class="linenos">6918</span></a><span class="sd"> ... exp.to_identifier(&quot;str_col&quot;), &quot;b&quot;, tbl=exp.to_identifier(&quot;foo&quot;)</span>
+</span><span id="L-6919"><a href="#L-6919"><span class="linenos">6919</span></a><span class="sd"> ... ).sql()</span>
+</span><span id="L-6920"><a href="#L-6920"><span class="linenos">6920</span></a><span class="sd"> &quot;SELECT * FROM foo WHERE str_col = &#39;b&#39;&quot;</span>
+</span><span id="L-6921"><a href="#L-6921"><span class="linenos">6921</span></a>
+</span><span id="L-6922"><a href="#L-6922"><span class="linenos">6922</span></a><span class="sd"> Returns:</span>
+</span><span id="L-6923"><a href="#L-6923"><span class="linenos">6923</span></a><span class="sd"> The mapped expression.</span>
+</span><span id="L-6924"><a href="#L-6924"><span class="linenos">6924</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="L-6925"><a href="#L-6925"><span class="linenos">6925</span></a>
+</span><span id="L-6926"><a href="#L-6926"><span class="linenos">6926</span></a> <span class="k">def</span> <span class="nf">_replace_placeholders</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Expression</span><span class="p">:</span>
+</span><span id="L-6927"><a href="#L-6927"><span class="linenos">6927</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">Placeholder</span><span class="p">):</span>
+</span><span id="L-6928"><a href="#L-6928"><span class="linenos">6928</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">:</span>
+</span><span id="L-6929"><a href="#L-6929"><span class="linenos">6929</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
+</span><span id="L-6930"><a href="#L-6930"><span class="linenos">6930</span></a> <span class="k">if</span> <span class="n">new_name</span><span class="p">:</span>
+</span><span id="L-6931"><a href="#L-6931"><span class="linenos">6931</span></a> <span class="k">return</span> <span class="n">convert</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span>
+</span><span id="L-6932"><a href="#L-6932"><span class="linenos">6932</span></a> <span class="k">else</span><span class="p">:</span>
+</span><span id="L-6933"><a href="#L-6933"><span class="linenos">6933</span></a> <span class="k">try</span><span class="p">:</span>
+</span><span id="L-6934"><a href="#L-6934"><span class="linenos">6934</span></a> <span class="k">return</span> <span class="n">convert</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">args</span><span class="p">))</span>
+</span><span id="L-6935"><a href="#L-6935"><span class="linenos">6935</span></a> <span class="k">except</span> <span class="ne">StopIteration</span><span class="p">:</span>
+</span><span id="L-6936"><a href="#L-6936"><span class="linenos">6936</span></a> <span class="k">pass</span>
+</span><span id="L-6937"><a href="#L-6937"><span class="linenos">6937</span></a> <span class="k">return</span> <span class="n">node</span>
+</span><span id="L-6938"><a href="#L-6938"><span class="linenos">6938</span></a>
+</span><span id="L-6939"><a href="#L-6939"><span class="linenos">6939</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_placeholders</span><span class="p">,</span> <span class="nb">iter</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="L-6940"><a href="#L-6940"><span class="linenos">6940</span></a>
-</span><span id="L-6941"><a href="#L-6941"><span class="linenos">6941</span></a><span class="k">def</span> <span class="nf">expand</span><span class="p">(</span>
-</span><span id="L-6942"><a href="#L-6942"><span class="linenos">6942</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span>
-</span><span id="L-6943"><a href="#L-6943"><span class="linenos">6943</span></a> <span class="n">sources</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Subqueryable</span><span class="p">],</span>
-</span><span id="L-6944"><a href="#L-6944"><span class="linenos">6944</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-6945"><a href="#L-6945"><span class="linenos">6945</span></a> <span class="n">copy</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-6946"><a href="#L-6946"><span class="linenos">6946</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Expression</span><span class="p">:</span>
-</span><span id="L-6947"><a href="#L-6947"><span class="linenos">6947</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Transforms an expression by expanding all referenced sources into subqueries.</span>
-</span><span id="L-6948"><a href="#L-6948"><span class="linenos">6948</span></a>
-</span><span id="L-6949"><a href="#L-6949"><span class="linenos">6949</span></a><span class="sd"> Examples:</span>
-</span><span id="L-6950"><a href="#L-6950"><span class="linenos">6950</span></a><span class="sd"> &gt;&gt;&gt; from sqlglot import parse_one</span>
-</span><span id="L-6951"><a href="#L-6951"><span class="linenos">6951</span></a><span class="sd"> &gt;&gt;&gt; expand(parse_one(&quot;select * from x AS z&quot;), {&quot;x&quot;: parse_one(&quot;select * from y&quot;)}).sql()</span>
-</span><span id="L-6952"><a href="#L-6952"><span class="linenos">6952</span></a><span class="sd"> &#39;SELECT * FROM (SELECT * FROM y) AS z /* source: x */&#39;</span>
-</span><span id="L-6953"><a href="#L-6953"><span class="linenos">6953</span></a>
-</span><span id="L-6954"><a href="#L-6954"><span class="linenos">6954</span></a><span class="sd"> &gt;&gt;&gt; expand(parse_one(&quot;select * from x AS z&quot;), {&quot;x&quot;: parse_one(&quot;select * from y&quot;), &quot;y&quot;: parse_one(&quot;select * from z&quot;)}).sql()</span>
-</span><span id="L-6955"><a href="#L-6955"><span class="linenos">6955</span></a><span class="sd"> &#39;SELECT * FROM (SELECT * FROM (SELECT * FROM z) AS y /* source: y */) AS z /* source: x */&#39;</span>
-</span><span id="L-6956"><a href="#L-6956"><span class="linenos">6956</span></a>
-</span><span id="L-6957"><a href="#L-6957"><span class="linenos">6957</span></a><span class="sd"> Args:</span>
-</span><span id="L-6958"><a href="#L-6958"><span class="linenos">6958</span></a><span class="sd"> expression: The expression to expand.</span>
-</span><span id="L-6959"><a href="#L-6959"><span class="linenos">6959</span></a><span class="sd"> sources: A dictionary of name to Subqueryables.</span>
-</span><span id="L-6960"><a href="#L-6960"><span class="linenos">6960</span></a><span class="sd"> dialect: The dialect of the sources dict.</span>
-</span><span id="L-6961"><a href="#L-6961"><span class="linenos">6961</span></a><span class="sd"> copy: Whether or not to copy the expression during transformation. Defaults to True.</span>
-</span><span id="L-6962"><a href="#L-6962"><span class="linenos">6962</span></a>
-</span><span id="L-6963"><a href="#L-6963"><span class="linenos">6963</span></a><span class="sd"> Returns:</span>
-</span><span id="L-6964"><a href="#L-6964"><span class="linenos">6964</span></a><span class="sd"> The transformed expression.</span>
-</span><span id="L-6965"><a href="#L-6965"><span class="linenos">6965</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="L-6966"><a href="#L-6966"><span class="linenos">6966</span></a> <span class="n">sources</span> <span class="o">=</span> <span class="p">{</span><span class="n">normalize_table_name</span><span class="p">(</span><span class="n">k</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">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">sources</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span>
-</span><span id="L-6967"><a href="#L-6967"><span class="linenos">6967</span></a>
-</span><span id="L-6968"><a href="#L-6968"><span class="linenos">6968</span></a> <span class="k">def</span> <span class="nf">_expand</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">):</span>
-</span><span id="L-6969"><a href="#L-6969"><span class="linenos">6969</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">Table</span><span class="p">):</span>
-</span><span id="L-6970"><a href="#L-6970"><span class="linenos">6970</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">normalize_table_name</span><span class="p">(</span><span class="n">node</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-6971"><a href="#L-6971"><span class="linenos">6971</span></a> <span class="n">source</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">name</span><span class="p">)</span>
-</span><span id="L-6972"><a href="#L-6972"><span class="linenos">6972</span></a> <span class="k">if</span> <span class="n">source</span><span class="p">:</span>
-</span><span id="L-6973"><a href="#L-6973"><span class="linenos">6973</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">alias</span> <span class="ow">or</span> <span class="n">name</span><span class="p">)</span>
-</span><span id="L-6974"><a href="#L-6974"><span class="linenos">6974</span></a> <span class="n">subquery</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">&quot;source: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">]</span>
-</span><span id="L-6975"><a href="#L-6975"><span class="linenos">6975</span></a> <span class="k">return</span> <span class="n">subquery</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</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-6976"><a href="#L-6976"><span class="linenos">6976</span></a> <span class="k">return</span> <span class="n">node</span>
-</span><span id="L-6977"><a href="#L-6977"><span class="linenos">6977</span></a>
-</span><span id="L-6978"><a href="#L-6978"><span class="linenos">6978</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span>
-</span><span id="L-6979"><a href="#L-6979"><span class="linenos">6979</span></a>
+</span><span id="L-6941"><a href="#L-6941"><span class="linenos">6941</span></a>
+</span><span id="L-6942"><a href="#L-6942"><span class="linenos">6942</span></a><span class="k">def</span> <span class="nf">expand</span><span class="p">(</span>
+</span><span id="L-6943"><a href="#L-6943"><span class="linenos">6943</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span>
+</span><span id="L-6944"><a href="#L-6944"><span class="linenos">6944</span></a> <span class="n">sources</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Subqueryable</span><span class="p">],</span>
+</span><span id="L-6945"><a href="#L-6945"><span class="linenos">6945</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-6946"><a href="#L-6946"><span class="linenos">6946</span></a> <span class="n">copy</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-6947"><a href="#L-6947"><span class="linenos">6947</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Expression</span><span class="p">:</span>
+</span><span id="L-6948"><a href="#L-6948"><span class="linenos">6948</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Transforms an expression by expanding all referenced sources into subqueries.</span>
+</span><span id="L-6949"><a href="#L-6949"><span class="linenos">6949</span></a>
+</span><span id="L-6950"><a href="#L-6950"><span class="linenos">6950</span></a><span class="sd"> Examples:</span>
+</span><span id="L-6951"><a href="#L-6951"><span class="linenos">6951</span></a><span class="sd"> &gt;&gt;&gt; from sqlglot import parse_one</span>
+</span><span id="L-6952"><a href="#L-6952"><span class="linenos">6952</span></a><span class="sd"> &gt;&gt;&gt; expand(parse_one(&quot;select * from x AS z&quot;), {&quot;x&quot;: parse_one(&quot;select * from y&quot;)}).sql()</span>
+</span><span id="L-6953"><a href="#L-6953"><span class="linenos">6953</span></a><span class="sd"> &#39;SELECT * FROM (SELECT * FROM y) AS z /* source: x */&#39;</span>
+</span><span id="L-6954"><a href="#L-6954"><span class="linenos">6954</span></a>
+</span><span id="L-6955"><a href="#L-6955"><span class="linenos">6955</span></a><span class="sd"> &gt;&gt;&gt; expand(parse_one(&quot;select * from x AS z&quot;), {&quot;x&quot;: parse_one(&quot;select * from y&quot;), &quot;y&quot;: parse_one(&quot;select * from z&quot;)}).sql()</span>
+</span><span id="L-6956"><a href="#L-6956"><span class="linenos">6956</span></a><span class="sd"> &#39;SELECT * FROM (SELECT * FROM (SELECT * FROM z) AS y /* source: y */) AS z /* source: x */&#39;</span>
+</span><span id="L-6957"><a href="#L-6957"><span class="linenos">6957</span></a>
+</span><span id="L-6958"><a href="#L-6958"><span class="linenos">6958</span></a><span class="sd"> Args:</span>
+</span><span id="L-6959"><a href="#L-6959"><span class="linenos">6959</span></a><span class="sd"> expression: The expression to expand.</span>
+</span><span id="L-6960"><a href="#L-6960"><span class="linenos">6960</span></a><span class="sd"> sources: A dictionary of name to Subqueryables.</span>
+</span><span id="L-6961"><a href="#L-6961"><span class="linenos">6961</span></a><span class="sd"> dialect: The dialect of the sources dict.</span>
+</span><span id="L-6962"><a href="#L-6962"><span class="linenos">6962</span></a><span class="sd"> copy: Whether or not to copy the expression during transformation. Defaults to True.</span>
+</span><span id="L-6963"><a href="#L-6963"><span class="linenos">6963</span></a>
+</span><span id="L-6964"><a href="#L-6964"><span class="linenos">6964</span></a><span class="sd"> Returns:</span>
+</span><span id="L-6965"><a href="#L-6965"><span class="linenos">6965</span></a><span class="sd"> The transformed expression.</span>
+</span><span id="L-6966"><a href="#L-6966"><span class="linenos">6966</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="L-6967"><a href="#L-6967"><span class="linenos">6967</span></a> <span class="n">sources</span> <span class="o">=</span> <span class="p">{</span><span class="n">normalize_table_name</span><span class="p">(</span><span class="n">k</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">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">sources</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span>
+</span><span id="L-6968"><a href="#L-6968"><span class="linenos">6968</span></a>
+</span><span id="L-6969"><a href="#L-6969"><span class="linenos">6969</span></a> <span class="k">def</span> <span class="nf">_expand</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">):</span>
+</span><span id="L-6970"><a href="#L-6970"><span class="linenos">6970</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">Table</span><span class="p">):</span>
+</span><span id="L-6971"><a href="#L-6971"><span class="linenos">6971</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">normalize_table_name</span><span class="p">(</span><span class="n">node</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-6972"><a href="#L-6972"><span class="linenos">6972</span></a> <span class="n">source</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">name</span><span class="p">)</span>
+</span><span id="L-6973"><a href="#L-6973"><span class="linenos">6973</span></a> <span class="k">if</span> <span class="n">source</span><span class="p">:</span>
+</span><span id="L-6974"><a href="#L-6974"><span class="linenos">6974</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">alias</span> <span class="ow">or</span> <span class="n">name</span><span class="p">)</span>
+</span><span id="L-6975"><a href="#L-6975"><span class="linenos">6975</span></a> <span class="n">subquery</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">&quot;source: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">]</span>
+</span><span id="L-6976"><a href="#L-6976"><span class="linenos">6976</span></a> <span class="k">return</span> <span class="n">subquery</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</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-6977"><a href="#L-6977"><span class="linenos">6977</span></a> <span class="k">return</span> <span class="n">node</span>
+</span><span id="L-6978"><a href="#L-6978"><span class="linenos">6978</span></a>
+</span><span id="L-6979"><a href="#L-6979"><span class="linenos">6979</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span>
</span><span id="L-6980"><a href="#L-6980"><span class="linenos">6980</span></a>
-</span><span id="L-6981"><a href="#L-6981"><span class="linenos">6981</span></a><span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <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 class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Func</span><span class="p">:</span>
-</span><span id="L-6982"><a href="#L-6982"><span class="linenos">6982</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="L-6983"><a href="#L-6983"><span class="linenos">6983</span></a><span class="sd"> Returns a Func expression.</span>
-</span><span id="L-6984"><a href="#L-6984"><span class="linenos">6984</span></a>
-</span><span id="L-6985"><a href="#L-6985"><span class="linenos">6985</span></a><span class="sd"> Examples:</span>
-</span><span id="L-6986"><a href="#L-6986"><span class="linenos">6986</span></a><span class="sd"> &gt;&gt;&gt; func(&quot;abs&quot;, 5).sql()</span>
-</span><span id="L-6987"><a href="#L-6987"><span class="linenos">6987</span></a><span class="sd"> &#39;ABS(5)&#39;</span>
-</span><span id="L-6988"><a href="#L-6988"><span class="linenos">6988</span></a>
-</span><span id="L-6989"><a href="#L-6989"><span class="linenos">6989</span></a><span class="sd"> &gt;&gt;&gt; func(&quot;cast&quot;, this=5, to=DataType.build(&quot;DOUBLE&quot;)).sql()</span>
-</span><span id="L-6990"><a href="#L-6990"><span class="linenos">6990</span></a><span class="sd"> &#39;CAST(5 AS DOUBLE)&#39;</span>
-</span><span id="L-6991"><a href="#L-6991"><span class="linenos">6991</span></a>
-</span><span id="L-6992"><a href="#L-6992"><span class="linenos">6992</span></a><span class="sd"> Args:</span>
-</span><span id="L-6993"><a href="#L-6993"><span class="linenos">6993</span></a><span class="sd"> name: the name of the function to build.</span>
-</span><span id="L-6994"><a href="#L-6994"><span class="linenos">6994</span></a><span class="sd"> args: the args used to instantiate the function of interest.</span>
-</span><span id="L-6995"><a href="#L-6995"><span class="linenos">6995</span></a><span class="sd"> copy: whether or not to copy the argument expressions.</span>
-</span><span id="L-6996"><a href="#L-6996"><span class="linenos">6996</span></a><span class="sd"> dialect: the source dialect.</span>
-</span><span id="L-6997"><a href="#L-6997"><span class="linenos">6997</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span>
-</span><span id="L-6998"><a href="#L-6998"><span class="linenos">6998</span></a>
-</span><span id="L-6999"><a href="#L-6999"><span class="linenos">6999</span></a><span class="sd"> Note:</span>
-</span><span id="L-7000"><a href="#L-7000"><span class="linenos">7000</span></a><span class="sd"> The arguments `args` and `kwargs` are mutually exclusive.</span>
-</span><span id="L-7001"><a href="#L-7001"><span class="linenos">7001</span></a>
-</span><span id="L-7002"><a href="#L-7002"><span class="linenos">7002</span></a><span class="sd"> Returns:</span>
-</span><span id="L-7003"><a href="#L-7003"><span class="linenos">7003</span></a><span class="sd"> An instance of the function of interest, or an anonymous function, if `name` doesn&#39;t</span>
-</span><span id="L-7004"><a href="#L-7004"><span class="linenos">7004</span></a><span class="sd"> correspond to an existing `sqlglot.expressions.Func` class.</span>
-</span><span id="L-7005"><a href="#L-7005"><span class="linenos">7005</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="L-7006"><a href="#L-7006"><span class="linenos">7006</span></a> <span class="k">if</span> <span class="n">args</span> <span class="ow">and</span> <span class="n">kwargs</span><span class="p">:</span>
-</span><span id="L-7007"><a href="#L-7007"><span class="linenos">7007</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Can&#39;t use both args and kwargs to instantiate a function.&quot;</span><span class="p">)</span>
-</span><span id="L-7008"><a href="#L-7008"><span class="linenos">7008</span></a>
-</span><span id="L-7009"><a href="#L-7009"><span class="linenos">7009</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects.dialect</span> <span class="kn">import</span> <span class="n">Dialect</span>
-</span><span id="L-7010"><a href="#L-7010"><span class="linenos">7010</span></a>
-</span><span id="L-7011"><a href="#L-7011"><span class="linenos">7011</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-7012"><a href="#L-7012"><span class="linenos">7012</span></a>
-</span><span id="L-7013"><a href="#L-7013"><span class="linenos">7013</span></a> <span class="n">converted</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">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">arg</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">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">]</span>
-</span><span id="L-7014"><a href="#L-7014"><span class="linenos">7014</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="n">key</span><span class="p">:</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">value</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">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span>
-</span><span id="L-7015"><a href="#L-7015"><span class="linenos">7015</span></a>
-</span><span id="L-7016"><a href="#L-7016"><span class="linenos">7016</span></a> <span class="n">constructor</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parser_class</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span>
-</span><span id="L-7017"><a href="#L-7017"><span class="linenos">7017</span></a> <span class="k">if</span> <span class="n">constructor</span><span class="p">:</span>
-</span><span id="L-7018"><a href="#L-7018"><span class="linenos">7018</span></a> <span class="k">if</span> <span class="n">converted</span><span class="p">:</span>
-</span><span id="L-7019"><a href="#L-7019"><span class="linenos">7019</span></a> <span class="k">if</span> <span class="s2">&quot;dialect&quot;</span> <span class="ow">in</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__code__</span><span class="o">.</span><span class="n">co_varnames</span><span class="p">:</span>
-</span><span id="L-7020"><a href="#L-7020"><span class="linenos">7020</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="n">converted</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-7021"><a href="#L-7021"><span class="linenos">7021</span></a> <span class="k">else</span><span class="p">:</span>
-</span><span id="L-7022"><a href="#L-7022"><span class="linenos">7022</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="n">converted</span><span class="p">)</span>
-</span><span id="L-7023"><a href="#L-7023"><span class="linenos">7023</span></a> <span class="k">elif</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;from_arg_list&quot;</span><span class="p">:</span>
-</span><span id="L-7024"><a href="#L-7024"><span class="linenos">7024</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__self__</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span>
-</span><span id="L-7025"><a href="#L-7025"><span class="linenos">7025</span></a> <span class="k">else</span><span class="p">:</span>
-</span><span id="L-7026"><a href="#L-7026"><span class="linenos">7026</span></a> <span class="n">constructor</span> <span class="o">=</span> <span class="n">FUNCTION_BY_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span>
-</span><span id="L-7027"><a href="#L-7027"><span class="linenos">7027</span></a> <span class="k">if</span> <span class="n">constructor</span><span class="p">:</span>
-</span><span id="L-7028"><a href="#L-7028"><span class="linenos">7028</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
-</span><span id="L-7029"><a href="#L-7029"><span class="linenos">7029</span></a> <span class="k">else</span><span class="p">:</span>
-</span><span id="L-7030"><a href="#L-7030"><span class="linenos">7030</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
-</span><span id="L-7031"><a href="#L-7031"><span class="linenos">7031</span></a> <span class="sa">f</span><span class="s2">&quot;Unable to convert &#39;</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">&#39; into a Func. Either manually construct &quot;</span>
-</span><span id="L-7032"><a href="#L-7032"><span class="linenos">7032</span></a> <span class="s2">&quot;the Func expression of interest or parse the function call.&quot;</span>
-</span><span id="L-7033"><a href="#L-7033"><span class="linenos">7033</span></a> <span class="p">)</span>
-</span><span id="L-7034"><a href="#L-7034"><span class="linenos">7034</span></a> <span class="k">else</span><span class="p">:</span>
-</span><span id="L-7035"><a href="#L-7035"><span class="linenos">7035</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="n">kwargs</span> <span class="ow">or</span> <span class="p">{</span><span class="s2">&quot;expressions&quot;</span><span class="p">:</span> <span class="n">converted</span><span class="p">}</span>
-</span><span id="L-7036"><a href="#L-7036"><span class="linenos">7036</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">Anonymous</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
-</span><span id="L-7037"><a href="#L-7037"><span class="linenos">7037</span></a>
-</span><span id="L-7038"><a href="#L-7038"><span class="linenos">7038</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">function</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">converted</span><span class="p">):</span>
-</span><span id="L-7039"><a href="#L-7039"><span class="linenos">7039</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span>
-</span><span id="L-7040"><a href="#L-7040"><span class="linenos">7040</span></a>
-</span><span id="L-7041"><a href="#L-7041"><span class="linenos">7041</span></a> <span class="k">return</span> <span class="n">function</span>
-</span><span id="L-7042"><a href="#L-7042"><span class="linenos">7042</span></a>
+</span><span id="L-6981"><a href="#L-6981"><span class="linenos">6981</span></a>
+</span><span id="L-6982"><a href="#L-6982"><span class="linenos">6982</span></a><span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <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 class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Func</span><span class="p">:</span>
+</span><span id="L-6983"><a href="#L-6983"><span class="linenos">6983</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="L-6984"><a href="#L-6984"><span class="linenos">6984</span></a><span class="sd"> Returns a Func expression.</span>
+</span><span id="L-6985"><a href="#L-6985"><span class="linenos">6985</span></a>
+</span><span id="L-6986"><a href="#L-6986"><span class="linenos">6986</span></a><span class="sd"> Examples:</span>
+</span><span id="L-6987"><a href="#L-6987"><span class="linenos">6987</span></a><span class="sd"> &gt;&gt;&gt; func(&quot;abs&quot;, 5).sql()</span>
+</span><span id="L-6988"><a href="#L-6988"><span class="linenos">6988</span></a><span class="sd"> &#39;ABS(5)&#39;</span>
+</span><span id="L-6989"><a href="#L-6989"><span class="linenos">6989</span></a>
+</span><span id="L-6990"><a href="#L-6990"><span class="linenos">6990</span></a><span class="sd"> &gt;&gt;&gt; func(&quot;cast&quot;, this=5, to=DataType.build(&quot;DOUBLE&quot;)).sql()</span>
+</span><span id="L-6991"><a href="#L-6991"><span class="linenos">6991</span></a><span class="sd"> &#39;CAST(5 AS DOUBLE)&#39;</span>
+</span><span id="L-6992"><a href="#L-6992"><span class="linenos">6992</span></a>
+</span><span id="L-6993"><a href="#L-6993"><span class="linenos">6993</span></a><span class="sd"> Args:</span>
+</span><span id="L-6994"><a href="#L-6994"><span class="linenos">6994</span></a><span class="sd"> name: the name of the function to build.</span>
+</span><span id="L-6995"><a href="#L-6995"><span class="linenos">6995</span></a><span class="sd"> args: the args used to instantiate the function of interest.</span>
+</span><span id="L-6996"><a href="#L-6996"><span class="linenos">6996</span></a><span class="sd"> copy: whether or not to copy the argument expressions.</span>
+</span><span id="L-6997"><a href="#L-6997"><span class="linenos">6997</span></a><span class="sd"> dialect: the source dialect.</span>
+</span><span id="L-6998"><a href="#L-6998"><span class="linenos">6998</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span>
+</span><span id="L-6999"><a href="#L-6999"><span class="linenos">6999</span></a>
+</span><span id="L-7000"><a href="#L-7000"><span class="linenos">7000</span></a><span class="sd"> Note:</span>
+</span><span id="L-7001"><a href="#L-7001"><span class="linenos">7001</span></a><span class="sd"> The arguments `args` and `kwargs` are mutually exclusive.</span>
+</span><span id="L-7002"><a href="#L-7002"><span class="linenos">7002</span></a>
+</span><span id="L-7003"><a href="#L-7003"><span class="linenos">7003</span></a><span class="sd"> Returns:</span>
+</span><span id="L-7004"><a href="#L-7004"><span class="linenos">7004</span></a><span class="sd"> An instance of the function of interest, or an anonymous function, if `name` doesn&#39;t</span>
+</span><span id="L-7005"><a href="#L-7005"><span class="linenos">7005</span></a><span class="sd"> correspond to an existing `sqlglot.expressions.Func` class.</span>
+</span><span id="L-7006"><a href="#L-7006"><span class="linenos">7006</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="L-7007"><a href="#L-7007"><span class="linenos">7007</span></a> <span class="k">if</span> <span class="n">args</span> <span class="ow">and</span> <span class="n">kwargs</span><span class="p">:</span>
+</span><span id="L-7008"><a href="#L-7008"><span class="linenos">7008</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Can&#39;t use both args and kwargs to instantiate a function.&quot;</span><span class="p">)</span>
+</span><span id="L-7009"><a href="#L-7009"><span class="linenos">7009</span></a>
+</span><span id="L-7010"><a href="#L-7010"><span class="linenos">7010</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects.dialect</span> <span class="kn">import</span> <span class="n">Dialect</span>
+</span><span id="L-7011"><a href="#L-7011"><span class="linenos">7011</span></a>
+</span><span id="L-7012"><a href="#L-7012"><span class="linenos">7012</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-7013"><a href="#L-7013"><span class="linenos">7013</span></a>
+</span><span id="L-7014"><a href="#L-7014"><span class="linenos">7014</span></a> <span class="n">converted</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">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">arg</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">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">]</span>
+</span><span id="L-7015"><a href="#L-7015"><span class="linenos">7015</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="n">key</span><span class="p">:</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">value</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">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span>
+</span><span id="L-7016"><a href="#L-7016"><span class="linenos">7016</span></a>
+</span><span id="L-7017"><a href="#L-7017"><span class="linenos">7017</span></a> <span class="n">constructor</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parser_class</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span>
+</span><span id="L-7018"><a href="#L-7018"><span class="linenos">7018</span></a> <span class="k">if</span> <span class="n">constructor</span><span class="p">:</span>
+</span><span id="L-7019"><a href="#L-7019"><span class="linenos">7019</span></a> <span class="k">if</span> <span class="n">converted</span><span class="p">:</span>
+</span><span id="L-7020"><a href="#L-7020"><span class="linenos">7020</span></a> <span class="k">if</span> <span class="s2">&quot;dialect&quot;</span> <span class="ow">in</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__code__</span><span class="o">.</span><span class="n">co_varnames</span><span class="p">:</span>
+</span><span id="L-7021"><a href="#L-7021"><span class="linenos">7021</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="n">converted</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-7022"><a href="#L-7022"><span class="linenos">7022</span></a> <span class="k">else</span><span class="p">:</span>
+</span><span id="L-7023"><a href="#L-7023"><span class="linenos">7023</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="n">converted</span><span class="p">)</span>
+</span><span id="L-7024"><a href="#L-7024"><span class="linenos">7024</span></a> <span class="k">elif</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;from_arg_list&quot;</span><span class="p">:</span>
+</span><span id="L-7025"><a href="#L-7025"><span class="linenos">7025</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__self__</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span>
+</span><span id="L-7026"><a href="#L-7026"><span class="linenos">7026</span></a> <span class="k">else</span><span class="p">:</span>
+</span><span id="L-7027"><a href="#L-7027"><span class="linenos">7027</span></a> <span class="n">constructor</span> <span class="o">=</span> <span class="n">FUNCTION_BY_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span>
+</span><span id="L-7028"><a href="#L-7028"><span class="linenos">7028</span></a> <span class="k">if</span> <span class="n">constructor</span><span class="p">:</span>
+</span><span id="L-7029"><a href="#L-7029"><span class="linenos">7029</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+</span><span id="L-7030"><a href="#L-7030"><span class="linenos">7030</span></a> <span class="k">else</span><span class="p">:</span>
+</span><span id="L-7031"><a href="#L-7031"><span class="linenos">7031</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
+</span><span id="L-7032"><a href="#L-7032"><span class="linenos">7032</span></a> <span class="sa">f</span><span class="s2">&quot;Unable to convert &#39;</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">&#39; into a Func. Either manually construct &quot;</span>
+</span><span id="L-7033"><a href="#L-7033"><span class="linenos">7033</span></a> <span class="s2">&quot;the Func expression of interest or parse the function call.&quot;</span>
+</span><span id="L-7034"><a href="#L-7034"><span class="linenos">7034</span></a> <span class="p">)</span>
+</span><span id="L-7035"><a href="#L-7035"><span class="linenos">7035</span></a> <span class="k">else</span><span class="p">:</span>
+</span><span id="L-7036"><a href="#L-7036"><span class="linenos">7036</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="n">kwargs</span> <span class="ow">or</span> <span class="p">{</span><span class="s2">&quot;expressions&quot;</span><span class="p">:</span> <span class="n">converted</span><span class="p">}</span>
+</span><span id="L-7037"><a href="#L-7037"><span class="linenos">7037</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">Anonymous</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+</span><span id="L-7038"><a href="#L-7038"><span class="linenos">7038</span></a>
+</span><span id="L-7039"><a href="#L-7039"><span class="linenos">7039</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">function</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">converted</span><span class="p">):</span>
+</span><span id="L-7040"><a href="#L-7040"><span class="linenos">7040</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span>
+</span><span id="L-7041"><a href="#L-7041"><span class="linenos">7041</span></a>
+</span><span id="L-7042"><a href="#L-7042"><span class="linenos">7042</span></a> <span class="k">return</span> <span class="n">function</span>
</span><span id="L-7043"><a href="#L-7043"><span class="linenos">7043</span></a>
-</span><span id="L-7044"><a href="#L-7044"><span class="linenos">7044</span></a><span class="k">def</span> <span class="nf">case</span><span class="p">(</span>
-</span><span id="L-7045"><a href="#L-7045"><span class="linenos">7045</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
-</span><span id="L-7046"><a href="#L-7046"><span class="linenos">7046</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span>
-</span><span id="L-7047"><a href="#L-7047"><span class="linenos">7047</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Case</span><span class="p">:</span>
-</span><span id="L-7048"><a href="#L-7048"><span class="linenos">7048</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="L-7049"><a href="#L-7049"><span class="linenos">7049</span></a><span class="sd"> Initialize a CASE statement.</span>
-</span><span id="L-7050"><a href="#L-7050"><span class="linenos">7050</span></a>
-</span><span id="L-7051"><a href="#L-7051"><span class="linenos">7051</span></a><span class="sd"> Example:</span>
-</span><span id="L-7052"><a href="#L-7052"><span class="linenos">7052</span></a><span class="sd"> case().when(&quot;a = 1&quot;, &quot;foo&quot;).else_(&quot;bar&quot;)</span>
-</span><span id="L-7053"><a href="#L-7053"><span class="linenos">7053</span></a>
-</span><span id="L-7054"><a href="#L-7054"><span class="linenos">7054</span></a><span class="sd"> Args:</span>
-</span><span id="L-7055"><a href="#L-7055"><span class="linenos">7055</span></a><span class="sd"> expression: Optionally, the input expression (not all dialects support this)</span>
-</span><span id="L-7056"><a href="#L-7056"><span class="linenos">7056</span></a><span class="sd"> **opts: Extra keyword arguments for parsing `expression`</span>
-</span><span id="L-7057"><a href="#L-7057"><span class="linenos">7057</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="L-7058"><a href="#L-7058"><span class="linenos">7058</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
-</span><span id="L-7059"><a href="#L-7059"><span class="linenos">7059</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span>
-</span><span id="L-7060"><a href="#L-7060"><span class="linenos">7060</span></a> <span class="k">else</span><span class="p">:</span>
-</span><span id="L-7061"><a href="#L-7061"><span class="linenos">7061</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span>
-</span><span id="L-7062"><a href="#L-7062"><span class="linenos">7062</span></a> <span class="k">return</span> <span class="n">Case</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">ifs</span><span class="o">=</span><span class="p">[])</span>
-</span><span id="L-7063"><a href="#L-7063"><span class="linenos">7063</span></a>
+</span><span id="L-7044"><a href="#L-7044"><span class="linenos">7044</span></a>
+</span><span id="L-7045"><a href="#L-7045"><span class="linenos">7045</span></a><span class="k">def</span> <span class="nf">case</span><span class="p">(</span>
+</span><span id="L-7046"><a href="#L-7046"><span class="linenos">7046</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
+</span><span id="L-7047"><a href="#L-7047"><span class="linenos">7047</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span>
+</span><span id="L-7048"><a href="#L-7048"><span class="linenos">7048</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Case</span><span class="p">:</span>
+</span><span id="L-7049"><a href="#L-7049"><span class="linenos">7049</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="L-7050"><a href="#L-7050"><span class="linenos">7050</span></a><span class="sd"> Initialize a CASE statement.</span>
+</span><span id="L-7051"><a href="#L-7051"><span class="linenos">7051</span></a>
+</span><span id="L-7052"><a href="#L-7052"><span class="linenos">7052</span></a><span class="sd"> Example:</span>
+</span><span id="L-7053"><a href="#L-7053"><span class="linenos">7053</span></a><span class="sd"> case().when(&quot;a = 1&quot;, &quot;foo&quot;).else_(&quot;bar&quot;)</span>
+</span><span id="L-7054"><a href="#L-7054"><span class="linenos">7054</span></a>
+</span><span id="L-7055"><a href="#L-7055"><span class="linenos">7055</span></a><span class="sd"> Args:</span>
+</span><span id="L-7056"><a href="#L-7056"><span class="linenos">7056</span></a><span class="sd"> expression: Optionally, the input expression (not all dialects support this)</span>
+</span><span id="L-7057"><a href="#L-7057"><span class="linenos">7057</span></a><span class="sd"> **opts: Extra keyword arguments for parsing `expression`</span>
+</span><span id="L-7058"><a href="#L-7058"><span class="linenos">7058</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="L-7059"><a href="#L-7059"><span class="linenos">7059</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+</span><span id="L-7060"><a href="#L-7060"><span class="linenos">7060</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span>
+</span><span id="L-7061"><a href="#L-7061"><span class="linenos">7061</span></a> <span class="k">else</span><span class="p">:</span>
+</span><span id="L-7062"><a href="#L-7062"><span class="linenos">7062</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span>
+</span><span id="L-7063"><a href="#L-7063"><span class="linenos">7063</span></a> <span class="k">return</span> <span class="n">Case</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">ifs</span><span class="o">=</span><span class="p">[])</span>
</span><span id="L-7064"><a href="#L-7064"><span class="linenos">7064</span></a>
-</span><span id="L-7065"><a href="#L-7065"><span class="linenos">7065</span></a><span class="k">def</span> <span class="nf">cast_unless</span><span class="p">(</span>
-</span><span id="L-7066"><a href="#L-7066"><span class="linenos">7066</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span>
-</span><span id="L-7067"><a href="#L-7067"><span class="linenos">7067</span></a> <span class="n">to</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">,</span>
-</span><span id="L-7068"><a href="#L-7068"><span class="linenos">7068</span></a> <span class="o">*</span><span class="n">types</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">,</span>
-</span><span id="L-7069"><a href="#L-7069"><span class="linenos">7069</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-7070"><a href="#L-7070"><span class="linenos">7070</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Expression</span> <span class="o">|</span> <span class="n">Cast</span><span class="p">:</span>
-</span><span id="L-7071"><a href="#L-7071"><span class="linenos">7071</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="L-7072"><a href="#L-7072"><span class="linenos">7072</span></a><span class="sd"> Cast an expression to a data type unless it is a specified type.</span>
-</span><span id="L-7073"><a href="#L-7073"><span class="linenos">7073</span></a>
-</span><span id="L-7074"><a href="#L-7074"><span class="linenos">7074</span></a><span class="sd"> Args:</span>
-</span><span id="L-7075"><a href="#L-7075"><span class="linenos">7075</span></a><span class="sd"> expression: The expression to cast.</span>
-</span><span id="L-7076"><a href="#L-7076"><span class="linenos">7076</span></a><span class="sd"> to: The data type to cast to.</span>
-</span><span id="L-7077"><a href="#L-7077"><span class="linenos">7077</span></a><span class="sd"> **types: The types to exclude from casting.</span>
-</span><span id="L-7078"><a href="#L-7078"><span class="linenos">7078</span></a><span class="sd"> **opts: Extra keyword arguments for parsing `expression`</span>
-</span><span id="L-7079"><a href="#L-7079"><span class="linenos">7079</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="L-7080"><a href="#L-7080"><span class="linenos">7080</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span>
-</span><span id="L-7081"><a href="#L-7081"><span class="linenos">7081</span></a> <span class="k">if</span> <span class="n">expr</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="o">*</span><span class="n">types</span><span class="p">):</span>
-</span><span id="L-7082"><a href="#L-7082"><span class="linenos">7082</span></a> <span class="k">return</span> <span class="n">expr</span>
-</span><span id="L-7083"><a href="#L-7083"><span class="linenos">7083</span></a> <span class="k">return</span> <span class="n">cast</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">to</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span>
-</span><span id="L-7084"><a href="#L-7084"><span class="linenos">7084</span></a>
+</span><span id="L-7065"><a href="#L-7065"><span class="linenos">7065</span></a>
+</span><span id="L-7066"><a href="#L-7066"><span class="linenos">7066</span></a><span class="k">def</span> <span class="nf">cast_unless</span><span class="p">(</span>
+</span><span id="L-7067"><a href="#L-7067"><span class="linenos">7067</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span>
+</span><span id="L-7068"><a href="#L-7068"><span class="linenos">7068</span></a> <span class="n">to</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">,</span>
+</span><span id="L-7069"><a href="#L-7069"><span class="linenos">7069</span></a> <span class="o">*</span><span class="n">types</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">,</span>
+</span><span id="L-7070"><a href="#L-7070"><span class="linenos">7070</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-7071"><a href="#L-7071"><span class="linenos">7071</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Expression</span> <span class="o">|</span> <span class="n">Cast</span><span class="p">:</span>
+</span><span id="L-7072"><a href="#L-7072"><span class="linenos">7072</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="L-7073"><a href="#L-7073"><span class="linenos">7073</span></a><span class="sd"> Cast an expression to a data type unless it is a specified type.</span>
+</span><span id="L-7074"><a href="#L-7074"><span class="linenos">7074</span></a>
+</span><span id="L-7075"><a href="#L-7075"><span class="linenos">7075</span></a><span class="sd"> Args:</span>
+</span><span id="L-7076"><a href="#L-7076"><span class="linenos">7076</span></a><span class="sd"> expression: The expression to cast.</span>
+</span><span id="L-7077"><a href="#L-7077"><span class="linenos">7077</span></a><span class="sd"> to: The data type to cast to.</span>
+</span><span id="L-7078"><a href="#L-7078"><span class="linenos">7078</span></a><span class="sd"> **types: The types to exclude from casting.</span>
+</span><span id="L-7079"><a href="#L-7079"><span class="linenos">7079</span></a><span class="sd"> **opts: Extra keyword arguments for parsing `expression`</span>
+</span><span id="L-7080"><a href="#L-7080"><span class="linenos">7080</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="L-7081"><a href="#L-7081"><span class="linenos">7081</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span>
+</span><span id="L-7082"><a href="#L-7082"><span class="linenos">7082</span></a> <span class="k">if</span> <span class="n">expr</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="o">*</span><span class="n">types</span><span class="p">):</span>
+</span><span id="L-7083"><a href="#L-7083"><span class="linenos">7083</span></a> <span class="k">return</span> <span class="n">expr</span>
+</span><span id="L-7084"><a href="#L-7084"><span class="linenos">7084</span></a> <span class="k">return</span> <span class="n">cast</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">to</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span>
</span><span id="L-7085"><a href="#L-7085"><span class="linenos">7085</span></a>
-</span><span id="L-7086"><a href="#L-7086"><span class="linenos">7086</span></a><span class="k">def</span> <span class="nf">array</span><span class="p">(</span>
-</span><span id="L-7087"><a href="#L-7087"><span class="linenos">7087</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <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 class="o">**</span><span class="n">kwargs</span>
-</span><span id="L-7088"><a href="#L-7088"><span class="linenos">7088</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Array</span><span class="p">:</span>
-</span><span id="L-7089"><a href="#L-7089"><span class="linenos">7089</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="L-7090"><a href="#L-7090"><span class="linenos">7090</span></a><span class="sd"> Returns an array.</span>
-</span><span id="L-7091"><a href="#L-7091"><span class="linenos">7091</span></a>
-</span><span id="L-7092"><a href="#L-7092"><span class="linenos">7092</span></a><span class="sd"> Examples:</span>
-</span><span id="L-7093"><a href="#L-7093"><span class="linenos">7093</span></a><span class="sd"> &gt;&gt;&gt; array(1, &#39;x&#39;).sql()</span>
-</span><span id="L-7094"><a href="#L-7094"><span class="linenos">7094</span></a><span class="sd"> &#39;ARRAY(1, x)&#39;</span>
-</span><span id="L-7095"><a href="#L-7095"><span class="linenos">7095</span></a>
-</span><span id="L-7096"><a href="#L-7096"><span class="linenos">7096</span></a><span class="sd"> Args:</span>
-</span><span id="L-7097"><a href="#L-7097"><span class="linenos">7097</span></a><span class="sd"> expressions: the expressions to add to the array.</span>
-</span><span id="L-7098"><a href="#L-7098"><span class="linenos">7098</span></a><span class="sd"> copy: whether or not to copy the argument expressions.</span>
-</span><span id="L-7099"><a href="#L-7099"><span class="linenos">7099</span></a><span class="sd"> dialect: the source dialect.</span>
-</span><span id="L-7100"><a href="#L-7100"><span class="linenos">7100</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span>
-</span><span id="L-7101"><a href="#L-7101"><span class="linenos">7101</span></a>
-</span><span id="L-7102"><a href="#L-7102"><span class="linenos">7102</span></a><span class="sd"> Returns:</span>
-</span><span id="L-7103"><a href="#L-7103"><span class="linenos">7103</span></a><span class="sd"> An array expression.</span>
-</span><span id="L-7104"><a href="#L-7104"><span class="linenos">7104</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="L-7105"><a href="#L-7105"><span class="linenos">7105</span></a> <span class="k">return</span> <span class="n">Array</span><span class="p">(</span>
-</span><span id="L-7106"><a href="#L-7106"><span class="linenos">7106</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span>
-</span><span id="L-7107"><a href="#L-7107"><span class="linenos">7107</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</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="o">**</span><span class="n">kwargs</span><span class="p">)</span>
-</span><span id="L-7108"><a href="#L-7108"><span class="linenos">7108</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span>
-</span><span id="L-7109"><a href="#L-7109"><span class="linenos">7109</span></a> <span class="p">]</span>
-</span><span id="L-7110"><a href="#L-7110"><span class="linenos">7110</span></a> <span class="p">)</span>
-</span><span id="L-7111"><a href="#L-7111"><span class="linenos">7111</span></a>
+</span><span id="L-7086"><a href="#L-7086"><span class="linenos">7086</span></a>
+</span><span id="L-7087"><a href="#L-7087"><span class="linenos">7087</span></a><span class="k">def</span> <span class="nf">array</span><span class="p">(</span>
+</span><span id="L-7088"><a href="#L-7088"><span class="linenos">7088</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <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 class="o">**</span><span class="n">kwargs</span>
+</span><span id="L-7089"><a href="#L-7089"><span class="linenos">7089</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Array</span><span class="p">:</span>
+</span><span id="L-7090"><a href="#L-7090"><span class="linenos">7090</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="L-7091"><a href="#L-7091"><span class="linenos">7091</span></a><span class="sd"> Returns an array.</span>
+</span><span id="L-7092"><a href="#L-7092"><span class="linenos">7092</span></a>
+</span><span id="L-7093"><a href="#L-7093"><span class="linenos">7093</span></a><span class="sd"> Examples:</span>
+</span><span id="L-7094"><a href="#L-7094"><span class="linenos">7094</span></a><span class="sd"> &gt;&gt;&gt; array(1, &#39;x&#39;).sql()</span>
+</span><span id="L-7095"><a href="#L-7095"><span class="linenos">7095</span></a><span class="sd"> &#39;ARRAY(1, x)&#39;</span>
+</span><span id="L-7096"><a href="#L-7096"><span class="linenos">7096</span></a>
+</span><span id="L-7097"><a href="#L-7097"><span class="linenos">7097</span></a><span class="sd"> Args:</span>
+</span><span id="L-7098"><a href="#L-7098"><span class="linenos">7098</span></a><span class="sd"> expressions: the expressions to add to the array.</span>
+</span><span id="L-7099"><a href="#L-7099"><span class="linenos">7099</span></a><span class="sd"> copy: whether or not to copy the argument expressions.</span>
+</span><span id="L-7100"><a href="#L-7100"><span class="linenos">7100</span></a><span class="sd"> dialect: the source dialect.</span>
+</span><span id="L-7101"><a href="#L-7101"><span class="linenos">7101</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span>
+</span><span id="L-7102"><a href="#L-7102"><span class="linenos">7102</span></a>
+</span><span id="L-7103"><a href="#L-7103"><span class="linenos">7103</span></a><span class="sd"> Returns:</span>
+</span><span id="L-7104"><a href="#L-7104"><span class="linenos">7104</span></a><span class="sd"> An array expression.</span>
+</span><span id="L-7105"><a href="#L-7105"><span class="linenos">7105</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="L-7106"><a href="#L-7106"><span class="linenos">7106</span></a> <span class="k">return</span> <span class="n">Array</span><span class="p">(</span>
+</span><span id="L-7107"><a href="#L-7107"><span class="linenos">7107</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span>
+</span><span id="L-7108"><a href="#L-7108"><span class="linenos">7108</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</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="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+</span><span id="L-7109"><a href="#L-7109"><span class="linenos">7109</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span>
+</span><span id="L-7110"><a href="#L-7110"><span class="linenos">7110</span></a> <span class="p">]</span>
+</span><span id="L-7111"><a href="#L-7111"><span class="linenos">7111</span></a> <span class="p">)</span>
</span><span id="L-7112"><a href="#L-7112"><span class="linenos">7112</span></a>
-</span><span id="L-7113"><a href="#L-7113"><span class="linenos">7113</span></a><span class="k">def</span> <span class="nf">tuple_</span><span class="p">(</span>
-</span><span id="L-7114"><a href="#L-7114"><span class="linenos">7114</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <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 class="o">**</span><span class="n">kwargs</span>
-</span><span id="L-7115"><a href="#L-7115"><span class="linenos">7115</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">:</span>
-</span><span id="L-7116"><a href="#L-7116"><span class="linenos">7116</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="L-7117"><a href="#L-7117"><span class="linenos">7117</span></a><span class="sd"> Returns an tuple.</span>
-</span><span id="L-7118"><a href="#L-7118"><span class="linenos">7118</span></a>
-</span><span id="L-7119"><a href="#L-7119"><span class="linenos">7119</span></a><span class="sd"> Examples:</span>
-</span><span id="L-7120"><a href="#L-7120"><span class="linenos">7120</span></a><span class="sd"> &gt;&gt;&gt; tuple_(1, &#39;x&#39;).sql()</span>
-</span><span id="L-7121"><a href="#L-7121"><span class="linenos">7121</span></a><span class="sd"> &#39;(1, x)&#39;</span>
-</span><span id="L-7122"><a href="#L-7122"><span class="linenos">7122</span></a>
-</span><span id="L-7123"><a href="#L-7123"><span class="linenos">7123</span></a><span class="sd"> Args:</span>
-</span><span id="L-7124"><a href="#L-7124"><span class="linenos">7124</span></a><span class="sd"> expressions: the expressions to add to the tuple.</span>
-</span><span id="L-7125"><a href="#L-7125"><span class="linenos">7125</span></a><span class="sd"> copy: whether or not to copy the argument expressions.</span>
-</span><span id="L-7126"><a href="#L-7126"><span class="linenos">7126</span></a><span class="sd"> dialect: the source dialect.</span>
-</span><span id="L-7127"><a href="#L-7127"><span class="linenos">7127</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span>
-</span><span id="L-7128"><a href="#L-7128"><span class="linenos">7128</span></a>
-</span><span id="L-7129"><a href="#L-7129"><span class="linenos">7129</span></a><span class="sd"> Returns:</span>
-</span><span id="L-7130"><a href="#L-7130"><span class="linenos">7130</span></a><span class="sd"> A tuple expression.</span>
-</span><span id="L-7131"><a href="#L-7131"><span class="linenos">7131</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="L-7132"><a href="#L-7132"><span class="linenos">7132</span></a> <span class="k">return</span> <span class="n">Tuple</span><span class="p">(</span>
-</span><span id="L-7133"><a href="#L-7133"><span class="linenos">7133</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span>
-</span><span id="L-7134"><a href="#L-7134"><span class="linenos">7134</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</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="o">**</span><span class="n">kwargs</span><span class="p">)</span>
-</span><span id="L-7135"><a href="#L-7135"><span class="linenos">7135</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span>
-</span><span id="L-7136"><a href="#L-7136"><span class="linenos">7136</span></a> <span class="p">]</span>
-</span><span id="L-7137"><a href="#L-7137"><span class="linenos">7137</span></a> <span class="p">)</span>
-</span><span id="L-7138"><a href="#L-7138"><span class="linenos">7138</span></a>
+</span><span id="L-7113"><a href="#L-7113"><span class="linenos">7113</span></a>
+</span><span id="L-7114"><a href="#L-7114"><span class="linenos">7114</span></a><span class="k">def</span> <span class="nf">tuple_</span><span class="p">(</span>
+</span><span id="L-7115"><a href="#L-7115"><span class="linenos">7115</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <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 class="o">**</span><span class="n">kwargs</span>
+</span><span id="L-7116"><a href="#L-7116"><span class="linenos">7116</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">:</span>
+</span><span id="L-7117"><a href="#L-7117"><span class="linenos">7117</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="L-7118"><a href="#L-7118"><span class="linenos">7118</span></a><span class="sd"> Returns an tuple.</span>
+</span><span id="L-7119"><a href="#L-7119"><span class="linenos">7119</span></a>
+</span><span id="L-7120"><a href="#L-7120"><span class="linenos">7120</span></a><span class="sd"> Examples:</span>
+</span><span id="L-7121"><a href="#L-7121"><span class="linenos">7121</span></a><span class="sd"> &gt;&gt;&gt; tuple_(1, &#39;x&#39;).sql()</span>
+</span><span id="L-7122"><a href="#L-7122"><span class="linenos">7122</span></a><span class="sd"> &#39;(1, x)&#39;</span>
+</span><span id="L-7123"><a href="#L-7123"><span class="linenos">7123</span></a>
+</span><span id="L-7124"><a href="#L-7124"><span class="linenos">7124</span></a><span class="sd"> Args:</span>
+</span><span id="L-7125"><a href="#L-7125"><span class="linenos">7125</span></a><span class="sd"> expressions: the expressions to add to the tuple.</span>
+</span><span id="L-7126"><a href="#L-7126"><span class="linenos">7126</span></a><span class="sd"> copy: whether or not to copy the argument expressions.</span>
+</span><span id="L-7127"><a href="#L-7127"><span class="linenos">7127</span></a><span class="sd"> dialect: the source dialect.</span>
+</span><span id="L-7128"><a href="#L-7128"><span class="linenos">7128</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span>
+</span><span id="L-7129"><a href="#L-7129"><span class="linenos">7129</span></a>
+</span><span id="L-7130"><a href="#L-7130"><span class="linenos">7130</span></a><span class="sd"> Returns:</span>
+</span><span id="L-7131"><a href="#L-7131"><span class="linenos">7131</span></a><span class="sd"> A tuple expression.</span>
+</span><span id="L-7132"><a href="#L-7132"><span class="linenos">7132</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="L-7133"><a href="#L-7133"><span class="linenos">7133</span></a> <span class="k">return</span> <span class="n">Tuple</span><span class="p">(</span>
+</span><span id="L-7134"><a href="#L-7134"><span class="linenos">7134</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span>
+</span><span id="L-7135"><a href="#L-7135"><span class="linenos">7135</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</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="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+</span><span id="L-7136"><a href="#L-7136"><span class="linenos">7136</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span>
+</span><span id="L-7137"><a href="#L-7137"><span class="linenos">7137</span></a> <span class="p">]</span>
+</span><span id="L-7138"><a href="#L-7138"><span class="linenos">7138</span></a> <span class="p">)</span>
</span><span id="L-7139"><a href="#L-7139"><span class="linenos">7139</span></a>
-</span><span id="L-7140"><a href="#L-7140"><span class="linenos">7140</span></a><span class="k">def</span> <span class="nf">true</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">Boolean</span><span class="p">:</span>
-</span><span id="L-7141"><a href="#L-7141"><span class="linenos">7141</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="L-7142"><a href="#L-7142"><span class="linenos">7142</span></a><span class="sd"> Returns a true Boolean expression.</span>
-</span><span id="L-7143"><a href="#L-7143"><span class="linenos">7143</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="L-7144"><a href="#L-7144"><span class="linenos">7144</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
-</span><span id="L-7145"><a href="#L-7145"><span class="linenos">7145</span></a>
+</span><span id="L-7140"><a href="#L-7140"><span class="linenos">7140</span></a>
+</span><span id="L-7141"><a href="#L-7141"><span class="linenos">7141</span></a><span class="k">def</span> <span class="nf">true</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">Boolean</span><span class="p">:</span>
+</span><span id="L-7142"><a href="#L-7142"><span class="linenos">7142</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="L-7143"><a href="#L-7143"><span class="linenos">7143</span></a><span class="sd"> Returns a true Boolean expression.</span>
+</span><span id="L-7144"><a href="#L-7144"><span class="linenos">7144</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="L-7145"><a href="#L-7145"><span class="linenos">7145</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="L-7146"><a href="#L-7146"><span class="linenos">7146</span></a>
-</span><span id="L-7147"><a href="#L-7147"><span class="linenos">7147</span></a><span class="k">def</span> <span class="nf">false</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">Boolean</span><span class="p">:</span>
-</span><span id="L-7148"><a href="#L-7148"><span class="linenos">7148</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="L-7149"><a href="#L-7149"><span class="linenos">7149</span></a><span class="sd"> Returns a false Boolean expression.</span>
-</span><span id="L-7150"><a href="#L-7150"><span class="linenos">7150</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="L-7151"><a href="#L-7151"><span class="linenos">7151</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
-</span><span id="L-7152"><a href="#L-7152"><span class="linenos">7152</span></a>
+</span><span id="L-7147"><a href="#L-7147"><span class="linenos">7147</span></a>
+</span><span id="L-7148"><a href="#L-7148"><span class="linenos">7148</span></a><span class="k">def</span> <span class="nf">false</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">Boolean</span><span class="p">:</span>
+</span><span id="L-7149"><a href="#L-7149"><span class="linenos">7149</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="L-7150"><a href="#L-7150"><span class="linenos">7150</span></a><span class="sd"> Returns a false Boolean expression.</span>
+</span><span id="L-7151"><a href="#L-7151"><span class="linenos">7151</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="L-7152"><a href="#L-7152"><span class="linenos">7152</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
</span><span id="L-7153"><a href="#L-7153"><span class="linenos">7153</span></a>
-</span><span id="L-7154"><a href="#L-7154"><span class="linenos">7154</span></a><span class="k">def</span> <span class="nf">null</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">Null</span><span class="p">:</span>
-</span><span id="L-7155"><a href="#L-7155"><span class="linenos">7155</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="L-7156"><a href="#L-7156"><span class="linenos">7156</span></a><span class="sd"> Returns a Null expression.</span>
-</span><span id="L-7157"><a href="#L-7157"><span class="linenos">7157</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="L-7158"><a href="#L-7158"><span class="linenos">7158</span></a> <span class="k">return</span> <span class="n">Null</span><span class="p">()</span>
+</span><span id="L-7154"><a href="#L-7154"><span class="linenos">7154</span></a>
+</span><span id="L-7155"><a href="#L-7155"><span class="linenos">7155</span></a><span class="k">def</span> <span class="nf">null</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">Null</span><span class="p">:</span>
+</span><span id="L-7156"><a href="#L-7156"><span class="linenos">7156</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="L-7157"><a href="#L-7157"><span class="linenos">7157</span></a><span class="sd"> Returns a Null expression.</span>
+</span><span id="L-7158"><a href="#L-7158"><span class="linenos">7158</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="L-7159"><a href="#L-7159"><span class="linenos">7159</span></a> <span class="k">return</span> <span class="n">Null</span><span class="p">()</span>
</span></pre></div>
@@ -48027,7 +48028,7 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w
<div class="attr variable">
<span class="name">TEXT_TYPES</span> =
<input id="DataType.TEXT_TYPES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
- <label class="view-value-button pdoc-button" for="DataType.TEXT_TYPES-view-value"></label><span class="default_value">{&lt;Type.VARCHAR: &#39;VARCHAR&#39;&gt;, &lt;Type.NVARCHAR: &#39;NVARCHAR&#39;&gt;, &lt;Type.TEXT: &#39;TEXT&#39;&gt;, &lt;Type.CHAR: &#39;CHAR&#39;&gt;, &lt;Type.NCHAR: &#39;NCHAR&#39;&gt;}</span>
+ <label class="view-value-button pdoc-button" for="DataType.TEXT_TYPES-view-value"></label><span class="default_value">{&lt;Type.NVARCHAR: &#39;NVARCHAR&#39;&gt;, &lt;Type.VARCHAR: &#39;VARCHAR&#39;&gt;, &lt;Type.CHAR: &#39;CHAR&#39;&gt;, &lt;Type.TEXT: &#39;TEXT&#39;&gt;, &lt;Type.NCHAR: &#39;NCHAR&#39;&gt;}</span>
</div>
@@ -48040,7 +48041,7 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w
<div class="attr variable">
<span class="name">INTEGER_TYPES</span> =
<input id="DataType.INTEGER_TYPES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
- <label class="view-value-button pdoc-button" for="DataType.INTEGER_TYPES-view-value"></label><span class="default_value">{&lt;Type.INT128: &#39;INT128&#39;&gt;, &lt;Type.BIGINT: &#39;BIGINT&#39;&gt;, &lt;Type.INT256: &#39;INT256&#39;&gt;, &lt;Type.TINYINT: &#39;TINYINT&#39;&gt;, &lt;Type.BIT: &#39;BIT&#39;&gt;, &lt;Type.INT: &#39;INT&#39;&gt;, &lt;Type.SMALLINT: &#39;SMALLINT&#39;&gt;}</span>
+ <label class="view-value-button pdoc-button" for="DataType.INTEGER_TYPES-view-value"></label><span class="default_value">{&lt;Type.BIT: &#39;BIT&#39;&gt;, &lt;Type.TINYINT: &#39;TINYINT&#39;&gt;, &lt;Type.INT: &#39;INT&#39;&gt;, &lt;Type.SMALLINT: &#39;SMALLINT&#39;&gt;, &lt;Type.BIGINT: &#39;BIGINT&#39;&gt;, &lt;Type.INT256: &#39;INT256&#39;&gt;, &lt;Type.INT128: &#39;INT128&#39;&gt;}</span>
</div>
@@ -48052,7 +48053,7 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w
<div id="DataType.FLOAT_TYPES" class="classattr">
<div class="attr variable">
<span class="name">FLOAT_TYPES</span> =
-<span class="default_value">{&lt;Type.FLOAT: &#39;FLOAT&#39;&gt;, &lt;Type.DOUBLE: &#39;DOUBLE&#39;&gt;}</span>
+<span class="default_value">{&lt;Type.DOUBLE: &#39;DOUBLE&#39;&gt;, &lt;Type.FLOAT: &#39;FLOAT&#39;&gt;}</span>
</div>
@@ -48065,7 +48066,7 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w
<div class="attr variable">
<span class="name">NUMERIC_TYPES</span> =
<input id="DataType.NUMERIC_TYPES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
- <label class="view-value-button pdoc-button" for="DataType.NUMERIC_TYPES-view-value"></label><span class="default_value">{&lt;Type.INT128: &#39;INT128&#39;&gt;, &lt;Type.BIGINT: &#39;BIGINT&#39;&gt;, &lt;Type.DOUBLE: &#39;DOUBLE&#39;&gt;, &lt;Type.INT256: &#39;INT256&#39;&gt;, &lt;Type.TINYINT: &#39;TINYINT&#39;&gt;, &lt;Type.BIT: &#39;BIT&#39;&gt;, &lt;Type.FLOAT: &#39;FLOAT&#39;&gt;, &lt;Type.INT: &#39;INT&#39;&gt;, &lt;Type.SMALLINT: &#39;SMALLINT&#39;&gt;}</span>
+ <label class="view-value-button pdoc-button" for="DataType.NUMERIC_TYPES-view-value"></label><span class="default_value">{&lt;Type.DOUBLE: &#39;DOUBLE&#39;&gt;, &lt;Type.BIT: &#39;BIT&#39;&gt;, &lt;Type.TINYINT: &#39;TINYINT&#39;&gt;, &lt;Type.FLOAT: &#39;FLOAT&#39;&gt;, &lt;Type.INT: &#39;INT&#39;&gt;, &lt;Type.SMALLINT: &#39;SMALLINT&#39;&gt;, &lt;Type.BIGINT: &#39;BIGINT&#39;&gt;, &lt;Type.INT256: &#39;INT256&#39;&gt;, &lt;Type.INT128: &#39;INT128&#39;&gt;}</span>
</div>
@@ -48078,7 +48079,7 @@ If an <code><a href="#Expression">Expression</a></code> instance is passed, it w
<div class="attr variable">
<span class="name">TEMPORAL_TYPES</span> =
<input id="DataType.TEMPORAL_TYPES-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
- <label class="view-value-button pdoc-button" for="DataType.TEMPORAL_TYPES-view-value"></label><span class="default_value">{&lt;Type.TIMESTAMPLTZ: &#39;TIMESTAMPLTZ&#39;&gt;, &lt;Type.DATETIME: &#39;DATETIME&#39;&gt;, &lt;Type.DATE32: &#39;DATE32&#39;&gt;, &lt;Type.TIMESTAMPTZ: &#39;TIMESTAMPTZ&#39;&gt;, &lt;Type.TIME: &#39;TIME&#39;&gt;, &lt;Type.TIMESTAMP_MS: &#39;TIMESTAMP_MS&#39;&gt;, &lt;Type.TIMESTAMP_NS: &#39;TIMESTAMP_NS&#39;&gt;, &lt;Type.TIMESTAMP: &#39;TIMESTAMP&#39;&gt;, &lt;Type.TIMETZ: &#39;TIMETZ&#39;&gt;, &lt;Type.DATETIME64: &#39;DATETIME64&#39;&gt;, &lt;Type.TIMESTAMP_S: &#39;TIMESTAMP_S&#39;&gt;, &lt;Type.DATE: &#39;DATE&#39;&gt;}</span>
+ <label class="view-value-button pdoc-button" for="DataType.TEMPORAL_TYPES-view-value"></label><span class="default_value">{&lt;Type.TIMESTAMP_MS: &#39;TIMESTAMP_MS&#39;&gt;, &lt;Type.TIMESTAMPTZ: &#39;TIMESTAMPTZ&#39;&gt;, &lt;Type.DATE: &#39;DATE&#39;&gt;, &lt;Type.DATE32: &#39;DATE32&#39;&gt;, &lt;Type.TIME: &#39;TIME&#39;&gt;, &lt;Type.DATETIME: &#39;DATETIME&#39;&gt;, &lt;Type.TIMESTAMP: &#39;TIMESTAMP&#39;&gt;, &lt;Type.TIMESTAMP_S: &#39;TIMESTAMP_S&#39;&gt;, &lt;Type.TIMESTAMPLTZ: &#39;TIMESTAMPLTZ&#39;&gt;, &lt;Type.TIMESTAMP_NS: &#39;TIMESTAMP_NS&#39;&gt;, &lt;Type.DATETIME64: &#39;DATETIME64&#39;&gt;, &lt;Type.TIMETZ: &#39;TIMETZ&#39;&gt;}</span>
</div>
@@ -90681,12 +90682,13 @@ True: Always quote.</li>
</span><span id="replace_tables-6895"><a href="#replace_tables-6895"><span class="linenos">6895</span></a> <span class="n">table</span> <span class="o">=</span> <span class="n">to_table</span><span class="p">(</span>
</span><span id="replace_tables-6896"><a href="#replace_tables-6896"><span class="linenos">6896</span></a> <span class="n">new_name</span><span class="p">,</span>
</span><span id="replace_tables-6897"><a href="#replace_tables-6897"><span class="linenos">6897</span></a> <span class="o">**</span><span class="p">{</span><span class="n">k</span><span class="p">:</span> <span class="n">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</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">items</span><span class="p">()</span> <span class="k">if</span> <span class="n">k</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">TABLE_PARTS</span><span class="p">},</span>
-</span><span id="replace_tables-6898"><a href="#replace_tables-6898"><span class="linenos">6898</span></a> <span class="p">)</span>
-</span><span id="replace_tables-6899"><a href="#replace_tables-6899"><span class="linenos">6899</span></a> <span class="n">table</span><span class="o">.</span><span class="n">add_comments</span><span class="p">([</span><span class="n">original</span><span class="p">])</span>
-</span><span id="replace_tables-6900"><a href="#replace_tables-6900"><span class="linenos">6900</span></a> <span class="k">return</span> <span class="n">table</span>
-</span><span id="replace_tables-6901"><a href="#replace_tables-6901"><span class="linenos">6901</span></a> <span class="k">return</span> <span class="n">node</span>
-</span><span id="replace_tables-6902"><a href="#replace_tables-6902"><span class="linenos">6902</span></a>
-</span><span id="replace_tables-6903"><a href="#replace_tables-6903"><span class="linenos">6903</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_tables</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span>
+</span><span id="replace_tables-6898"><a href="#replace_tables-6898"><span class="linenos">6898</span></a> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span>
+</span><span id="replace_tables-6899"><a href="#replace_tables-6899"><span class="linenos">6899</span></a> <span class="p">)</span>
+</span><span id="replace_tables-6900"><a href="#replace_tables-6900"><span class="linenos">6900</span></a> <span class="n">table</span><span class="o">.</span><span class="n">add_comments</span><span class="p">([</span><span class="n">original</span><span class="p">])</span>
+</span><span id="replace_tables-6901"><a href="#replace_tables-6901"><span class="linenos">6901</span></a> <span class="k">return</span> <span class="n">table</span>
+</span><span id="replace_tables-6902"><a href="#replace_tables-6902"><span class="linenos">6902</span></a> <span class="k">return</span> <span class="n">node</span>
+</span><span id="replace_tables-6903"><a href="#replace_tables-6903"><span class="linenos">6903</span></a>
+</span><span id="replace_tables-6904"><a href="#replace_tables-6904"><span class="linenos">6904</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_tables</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span>
</span></pre></div>
@@ -90732,40 +90734,40 @@ True: Always quote.</li>
</div>
<a class="headerlink" href="#replace_placeholders"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="replace_placeholders-6906"><a href="#replace_placeholders-6906"><span class="linenos">6906</span></a><span class="k">def</span> <span class="nf">replace_placeholders</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Expression</span><span class="p">:</span>
-</span><span id="replace_placeholders-6907"><a href="#replace_placeholders-6907"><span class="linenos">6907</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Replace placeholders in an expression.</span>
-</span><span id="replace_placeholders-6908"><a href="#replace_placeholders-6908"><span class="linenos">6908</span></a>
-</span><span id="replace_placeholders-6909"><a href="#replace_placeholders-6909"><span class="linenos">6909</span></a><span class="sd"> Args:</span>
-</span><span id="replace_placeholders-6910"><a href="#replace_placeholders-6910"><span class="linenos">6910</span></a><span class="sd"> expression: expression node to be transformed and replaced.</span>
-</span><span id="replace_placeholders-6911"><a href="#replace_placeholders-6911"><span class="linenos">6911</span></a><span class="sd"> args: positional names that will substitute unnamed placeholders in the given order.</span>
-</span><span id="replace_placeholders-6912"><a href="#replace_placeholders-6912"><span class="linenos">6912</span></a><span class="sd"> kwargs: keyword arguments that will substitute named placeholders.</span>
-</span><span id="replace_placeholders-6913"><a href="#replace_placeholders-6913"><span class="linenos">6913</span></a>
-</span><span id="replace_placeholders-6914"><a href="#replace_placeholders-6914"><span class="linenos">6914</span></a><span class="sd"> Examples:</span>
-</span><span id="replace_placeholders-6915"><a href="#replace_placeholders-6915"><span class="linenos">6915</span></a><span class="sd"> &gt;&gt;&gt; from sqlglot import exp, parse_one</span>
-</span><span id="replace_placeholders-6916"><a href="#replace_placeholders-6916"><span class="linenos">6916</span></a><span class="sd"> &gt;&gt;&gt; replace_placeholders(</span>
-</span><span id="replace_placeholders-6917"><a href="#replace_placeholders-6917"><span class="linenos">6917</span></a><span class="sd"> ... parse_one(&quot;select * from :tbl where ? = ?&quot;),</span>
-</span><span id="replace_placeholders-6918"><a href="#replace_placeholders-6918"><span class="linenos">6918</span></a><span class="sd"> ... exp.to_identifier(&quot;str_col&quot;), &quot;b&quot;, tbl=exp.to_identifier(&quot;foo&quot;)</span>
-</span><span id="replace_placeholders-6919"><a href="#replace_placeholders-6919"><span class="linenos">6919</span></a><span class="sd"> ... ).sql()</span>
-</span><span id="replace_placeholders-6920"><a href="#replace_placeholders-6920"><span class="linenos">6920</span></a><span class="sd"> &quot;SELECT * FROM foo WHERE str_col = &#39;b&#39;&quot;</span>
-</span><span id="replace_placeholders-6921"><a href="#replace_placeholders-6921"><span class="linenos">6921</span></a>
-</span><span id="replace_placeholders-6922"><a href="#replace_placeholders-6922"><span class="linenos">6922</span></a><span class="sd"> Returns:</span>
-</span><span id="replace_placeholders-6923"><a href="#replace_placeholders-6923"><span class="linenos">6923</span></a><span class="sd"> The mapped expression.</span>
-</span><span id="replace_placeholders-6924"><a href="#replace_placeholders-6924"><span class="linenos">6924</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="replace_placeholders-6925"><a href="#replace_placeholders-6925"><span class="linenos">6925</span></a>
-</span><span id="replace_placeholders-6926"><a href="#replace_placeholders-6926"><span class="linenos">6926</span></a> <span class="k">def</span> <span class="nf">_replace_placeholders</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Expression</span><span class="p">:</span>
-</span><span id="replace_placeholders-6927"><a href="#replace_placeholders-6927"><span class="linenos">6927</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">Placeholder</span><span class="p">):</span>
-</span><span id="replace_placeholders-6928"><a href="#replace_placeholders-6928"><span class="linenos">6928</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">:</span>
-</span><span id="replace_placeholders-6929"><a href="#replace_placeholders-6929"><span class="linenos">6929</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
-</span><span id="replace_placeholders-6930"><a href="#replace_placeholders-6930"><span class="linenos">6930</span></a> <span class="k">if</span> <span class="n">new_name</span><span class="p">:</span>
-</span><span id="replace_placeholders-6931"><a href="#replace_placeholders-6931"><span class="linenos">6931</span></a> <span class="k">return</span> <span class="n">convert</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span>
-</span><span id="replace_placeholders-6932"><a href="#replace_placeholders-6932"><span class="linenos">6932</span></a> <span class="k">else</span><span class="p">:</span>
-</span><span id="replace_placeholders-6933"><a href="#replace_placeholders-6933"><span class="linenos">6933</span></a> <span class="k">try</span><span class="p">:</span>
-</span><span id="replace_placeholders-6934"><a href="#replace_placeholders-6934"><span class="linenos">6934</span></a> <span class="k">return</span> <span class="n">convert</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">args</span><span class="p">))</span>
-</span><span id="replace_placeholders-6935"><a href="#replace_placeholders-6935"><span class="linenos">6935</span></a> <span class="k">except</span> <span class="ne">StopIteration</span><span class="p">:</span>
-</span><span id="replace_placeholders-6936"><a href="#replace_placeholders-6936"><span class="linenos">6936</span></a> <span class="k">pass</span>
-</span><span id="replace_placeholders-6937"><a href="#replace_placeholders-6937"><span class="linenos">6937</span></a> <span class="k">return</span> <span class="n">node</span>
-</span><span id="replace_placeholders-6938"><a href="#replace_placeholders-6938"><span class="linenos">6938</span></a>
-</span><span id="replace_placeholders-6939"><a href="#replace_placeholders-6939"><span class="linenos">6939</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_placeholders</span><span class="p">,</span> <span class="nb">iter</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="replace_placeholders-6907"><a href="#replace_placeholders-6907"><span class="linenos">6907</span></a><span class="k">def</span> <span class="nf">replace_placeholders</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Expression</span><span class="p">:</span>
+</span><span id="replace_placeholders-6908"><a href="#replace_placeholders-6908"><span class="linenos">6908</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Replace placeholders in an expression.</span>
+</span><span id="replace_placeholders-6909"><a href="#replace_placeholders-6909"><span class="linenos">6909</span></a>
+</span><span id="replace_placeholders-6910"><a href="#replace_placeholders-6910"><span class="linenos">6910</span></a><span class="sd"> Args:</span>
+</span><span id="replace_placeholders-6911"><a href="#replace_placeholders-6911"><span class="linenos">6911</span></a><span class="sd"> expression: expression node to be transformed and replaced.</span>
+</span><span id="replace_placeholders-6912"><a href="#replace_placeholders-6912"><span class="linenos">6912</span></a><span class="sd"> args: positional names that will substitute unnamed placeholders in the given order.</span>
+</span><span id="replace_placeholders-6913"><a href="#replace_placeholders-6913"><span class="linenos">6913</span></a><span class="sd"> kwargs: keyword arguments that will substitute named placeholders.</span>
+</span><span id="replace_placeholders-6914"><a href="#replace_placeholders-6914"><span class="linenos">6914</span></a>
+</span><span id="replace_placeholders-6915"><a href="#replace_placeholders-6915"><span class="linenos">6915</span></a><span class="sd"> Examples:</span>
+</span><span id="replace_placeholders-6916"><a href="#replace_placeholders-6916"><span class="linenos">6916</span></a><span class="sd"> &gt;&gt;&gt; from sqlglot import exp, parse_one</span>
+</span><span id="replace_placeholders-6917"><a href="#replace_placeholders-6917"><span class="linenos">6917</span></a><span class="sd"> &gt;&gt;&gt; replace_placeholders(</span>
+</span><span id="replace_placeholders-6918"><a href="#replace_placeholders-6918"><span class="linenos">6918</span></a><span class="sd"> ... parse_one(&quot;select * from :tbl where ? = ?&quot;),</span>
+</span><span id="replace_placeholders-6919"><a href="#replace_placeholders-6919"><span class="linenos">6919</span></a><span class="sd"> ... exp.to_identifier(&quot;str_col&quot;), &quot;b&quot;, tbl=exp.to_identifier(&quot;foo&quot;)</span>
+</span><span id="replace_placeholders-6920"><a href="#replace_placeholders-6920"><span class="linenos">6920</span></a><span class="sd"> ... ).sql()</span>
+</span><span id="replace_placeholders-6921"><a href="#replace_placeholders-6921"><span class="linenos">6921</span></a><span class="sd"> &quot;SELECT * FROM foo WHERE str_col = &#39;b&#39;&quot;</span>
+</span><span id="replace_placeholders-6922"><a href="#replace_placeholders-6922"><span class="linenos">6922</span></a>
+</span><span id="replace_placeholders-6923"><a href="#replace_placeholders-6923"><span class="linenos">6923</span></a><span class="sd"> Returns:</span>
+</span><span id="replace_placeholders-6924"><a href="#replace_placeholders-6924"><span class="linenos">6924</span></a><span class="sd"> The mapped expression.</span>
+</span><span id="replace_placeholders-6925"><a href="#replace_placeholders-6925"><span class="linenos">6925</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="replace_placeholders-6926"><a href="#replace_placeholders-6926"><span class="linenos">6926</span></a>
+</span><span id="replace_placeholders-6927"><a href="#replace_placeholders-6927"><span class="linenos">6927</span></a> <span class="k">def</span> <span class="nf">_replace_placeholders</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span> <span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Expression</span><span class="p">:</span>
+</span><span id="replace_placeholders-6928"><a href="#replace_placeholders-6928"><span class="linenos">6928</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">Placeholder</span><span class="p">):</span>
+</span><span id="replace_placeholders-6929"><a href="#replace_placeholders-6929"><span class="linenos">6929</span></a> <span class="k">if</span> <span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">:</span>
+</span><span id="replace_placeholders-6930"><a href="#replace_placeholders-6930"><span class="linenos">6930</span></a> <span class="n">new_name</span> <span class="o">=</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
+</span><span id="replace_placeholders-6931"><a href="#replace_placeholders-6931"><span class="linenos">6931</span></a> <span class="k">if</span> <span class="n">new_name</span><span class="p">:</span>
+</span><span id="replace_placeholders-6932"><a href="#replace_placeholders-6932"><span class="linenos">6932</span></a> <span class="k">return</span> <span class="n">convert</span><span class="p">(</span><span class="n">new_name</span><span class="p">)</span>
+</span><span id="replace_placeholders-6933"><a href="#replace_placeholders-6933"><span class="linenos">6933</span></a> <span class="k">else</span><span class="p">:</span>
+</span><span id="replace_placeholders-6934"><a href="#replace_placeholders-6934"><span class="linenos">6934</span></a> <span class="k">try</span><span class="p">:</span>
+</span><span id="replace_placeholders-6935"><a href="#replace_placeholders-6935"><span class="linenos">6935</span></a> <span class="k">return</span> <span class="n">convert</span><span class="p">(</span><span class="nb">next</span><span class="p">(</span><span class="n">args</span><span class="p">))</span>
+</span><span id="replace_placeholders-6936"><a href="#replace_placeholders-6936"><span class="linenos">6936</span></a> <span class="k">except</span> <span class="ne">StopIteration</span><span class="p">:</span>
+</span><span id="replace_placeholders-6937"><a href="#replace_placeholders-6937"><span class="linenos">6937</span></a> <span class="k">pass</span>
+</span><span id="replace_placeholders-6938"><a href="#replace_placeholders-6938"><span class="linenos">6938</span></a> <span class="k">return</span> <span class="n">node</span>
+</span><span id="replace_placeholders-6939"><a href="#replace_placeholders-6939"><span class="linenos">6939</span></a>
+</span><span id="replace_placeholders-6940"><a href="#replace_placeholders-6940"><span class="linenos">6940</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_replace_placeholders</span><span class="p">,</span> <span class="nb">iter</span><span class="p">(</span><span class="n">args</span><span class="p">),</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div>
@@ -90813,44 +90815,44 @@ True: Always quote.</li>
</div>
<a class="headerlink" href="#expand"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="expand-6942"><a href="#expand-6942"><span class="linenos">6942</span></a><span class="k">def</span> <span class="nf">expand</span><span class="p">(</span>
-</span><span id="expand-6943"><a href="#expand-6943"><span class="linenos">6943</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span>
-</span><span id="expand-6944"><a href="#expand-6944"><span class="linenos">6944</span></a> <span class="n">sources</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Subqueryable</span><span class="p">],</span>
-</span><span id="expand-6945"><a href="#expand-6945"><span class="linenos">6945</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="expand-6946"><a href="#expand-6946"><span class="linenos">6946</span></a> <span class="n">copy</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="expand-6947"><a href="#expand-6947"><span class="linenos">6947</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Expression</span><span class="p">:</span>
-</span><span id="expand-6948"><a href="#expand-6948"><span class="linenos">6948</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Transforms an expression by expanding all referenced sources into subqueries.</span>
-</span><span id="expand-6949"><a href="#expand-6949"><span class="linenos">6949</span></a>
-</span><span id="expand-6950"><a href="#expand-6950"><span class="linenos">6950</span></a><span class="sd"> Examples:</span>
-</span><span id="expand-6951"><a href="#expand-6951"><span class="linenos">6951</span></a><span class="sd"> &gt;&gt;&gt; from sqlglot import parse_one</span>
-</span><span id="expand-6952"><a href="#expand-6952"><span class="linenos">6952</span></a><span class="sd"> &gt;&gt;&gt; expand(parse_one(&quot;select * from x AS z&quot;), {&quot;x&quot;: parse_one(&quot;select * from y&quot;)}).sql()</span>
-</span><span id="expand-6953"><a href="#expand-6953"><span class="linenos">6953</span></a><span class="sd"> &#39;SELECT * FROM (SELECT * FROM y) AS z /* source: x */&#39;</span>
-</span><span id="expand-6954"><a href="#expand-6954"><span class="linenos">6954</span></a>
-</span><span id="expand-6955"><a href="#expand-6955"><span class="linenos">6955</span></a><span class="sd"> &gt;&gt;&gt; expand(parse_one(&quot;select * from x AS z&quot;), {&quot;x&quot;: parse_one(&quot;select * from y&quot;), &quot;y&quot;: parse_one(&quot;select * from z&quot;)}).sql()</span>
-</span><span id="expand-6956"><a href="#expand-6956"><span class="linenos">6956</span></a><span class="sd"> &#39;SELECT * FROM (SELECT * FROM (SELECT * FROM z) AS y /* source: y */) AS z /* source: x */&#39;</span>
-</span><span id="expand-6957"><a href="#expand-6957"><span class="linenos">6957</span></a>
-</span><span id="expand-6958"><a href="#expand-6958"><span class="linenos">6958</span></a><span class="sd"> Args:</span>
-</span><span id="expand-6959"><a href="#expand-6959"><span class="linenos">6959</span></a><span class="sd"> expression: The expression to expand.</span>
-</span><span id="expand-6960"><a href="#expand-6960"><span class="linenos">6960</span></a><span class="sd"> sources: A dictionary of name to Subqueryables.</span>
-</span><span id="expand-6961"><a href="#expand-6961"><span class="linenos">6961</span></a><span class="sd"> dialect: The dialect of the sources dict.</span>
-</span><span id="expand-6962"><a href="#expand-6962"><span class="linenos">6962</span></a><span class="sd"> copy: Whether or not to copy the expression during transformation. Defaults to True.</span>
-</span><span id="expand-6963"><a href="#expand-6963"><span class="linenos">6963</span></a>
-</span><span id="expand-6964"><a href="#expand-6964"><span class="linenos">6964</span></a><span class="sd"> Returns:</span>
-</span><span id="expand-6965"><a href="#expand-6965"><span class="linenos">6965</span></a><span class="sd"> The transformed expression.</span>
-</span><span id="expand-6966"><a href="#expand-6966"><span class="linenos">6966</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="expand-6967"><a href="#expand-6967"><span class="linenos">6967</span></a> <span class="n">sources</span> <span class="o">=</span> <span class="p">{</span><span class="n">normalize_table_name</span><span class="p">(</span><span class="n">k</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">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">sources</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span>
-</span><span id="expand-6968"><a href="#expand-6968"><span class="linenos">6968</span></a>
-</span><span id="expand-6969"><a href="#expand-6969"><span class="linenos">6969</span></a> <span class="k">def</span> <span class="nf">_expand</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">):</span>
-</span><span id="expand-6970"><a href="#expand-6970"><span class="linenos">6970</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">Table</span><span class="p">):</span>
-</span><span id="expand-6971"><a href="#expand-6971"><span class="linenos">6971</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">normalize_table_name</span><span class="p">(</span><span class="n">node</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="expand-6972"><a href="#expand-6972"><span class="linenos">6972</span></a> <span class="n">source</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">name</span><span class="p">)</span>
-</span><span id="expand-6973"><a href="#expand-6973"><span class="linenos">6973</span></a> <span class="k">if</span> <span class="n">source</span><span class="p">:</span>
-</span><span id="expand-6974"><a href="#expand-6974"><span class="linenos">6974</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">alias</span> <span class="ow">or</span> <span class="n">name</span><span class="p">)</span>
-</span><span id="expand-6975"><a href="#expand-6975"><span class="linenos">6975</span></a> <span class="n">subquery</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">&quot;source: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">]</span>
-</span><span id="expand-6976"><a href="#expand-6976"><span class="linenos">6976</span></a> <span class="k">return</span> <span class="n">subquery</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</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="expand-6977"><a href="#expand-6977"><span class="linenos">6977</span></a> <span class="k">return</span> <span class="n">node</span>
-</span><span id="expand-6978"><a href="#expand-6978"><span class="linenos">6978</span></a>
-</span><span id="expand-6979"><a href="#expand-6979"><span class="linenos">6979</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="expand-6943"><a href="#expand-6943"><span class="linenos">6943</span></a><span class="k">def</span> <span class="nf">expand</span><span class="p">(</span>
+</span><span id="expand-6944"><a href="#expand-6944"><span class="linenos">6944</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">Expression</span><span class="p">,</span>
+</span><span id="expand-6945"><a href="#expand-6945"><span class="linenos">6945</span></a> <span class="n">sources</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Subqueryable</span><span class="p">],</span>
+</span><span id="expand-6946"><a href="#expand-6946"><span class="linenos">6946</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="expand-6947"><a href="#expand-6947"><span class="linenos">6947</span></a> <span class="n">copy</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="expand-6948"><a href="#expand-6948"><span class="linenos">6948</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Expression</span><span class="p">:</span>
+</span><span id="expand-6949"><a href="#expand-6949"><span class="linenos">6949</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Transforms an expression by expanding all referenced sources into subqueries.</span>
+</span><span id="expand-6950"><a href="#expand-6950"><span class="linenos">6950</span></a>
+</span><span id="expand-6951"><a href="#expand-6951"><span class="linenos">6951</span></a><span class="sd"> Examples:</span>
+</span><span id="expand-6952"><a href="#expand-6952"><span class="linenos">6952</span></a><span class="sd"> &gt;&gt;&gt; from sqlglot import parse_one</span>
+</span><span id="expand-6953"><a href="#expand-6953"><span class="linenos">6953</span></a><span class="sd"> &gt;&gt;&gt; expand(parse_one(&quot;select * from x AS z&quot;), {&quot;x&quot;: parse_one(&quot;select * from y&quot;)}).sql()</span>
+</span><span id="expand-6954"><a href="#expand-6954"><span class="linenos">6954</span></a><span class="sd"> &#39;SELECT * FROM (SELECT * FROM y) AS z /* source: x */&#39;</span>
+</span><span id="expand-6955"><a href="#expand-6955"><span class="linenos">6955</span></a>
+</span><span id="expand-6956"><a href="#expand-6956"><span class="linenos">6956</span></a><span class="sd"> &gt;&gt;&gt; expand(parse_one(&quot;select * from x AS z&quot;), {&quot;x&quot;: parse_one(&quot;select * from y&quot;), &quot;y&quot;: parse_one(&quot;select * from z&quot;)}).sql()</span>
+</span><span id="expand-6957"><a href="#expand-6957"><span class="linenos">6957</span></a><span class="sd"> &#39;SELECT * FROM (SELECT * FROM (SELECT * FROM z) AS y /* source: y */) AS z /* source: x */&#39;</span>
+</span><span id="expand-6958"><a href="#expand-6958"><span class="linenos">6958</span></a>
+</span><span id="expand-6959"><a href="#expand-6959"><span class="linenos">6959</span></a><span class="sd"> Args:</span>
+</span><span id="expand-6960"><a href="#expand-6960"><span class="linenos">6960</span></a><span class="sd"> expression: The expression to expand.</span>
+</span><span id="expand-6961"><a href="#expand-6961"><span class="linenos">6961</span></a><span class="sd"> sources: A dictionary of name to Subqueryables.</span>
+</span><span id="expand-6962"><a href="#expand-6962"><span class="linenos">6962</span></a><span class="sd"> dialect: The dialect of the sources dict.</span>
+</span><span id="expand-6963"><a href="#expand-6963"><span class="linenos">6963</span></a><span class="sd"> copy: Whether or not to copy the expression during transformation. Defaults to True.</span>
+</span><span id="expand-6964"><a href="#expand-6964"><span class="linenos">6964</span></a>
+</span><span id="expand-6965"><a href="#expand-6965"><span class="linenos">6965</span></a><span class="sd"> Returns:</span>
+</span><span id="expand-6966"><a href="#expand-6966"><span class="linenos">6966</span></a><span class="sd"> The transformed expression.</span>
+</span><span id="expand-6967"><a href="#expand-6967"><span class="linenos">6967</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="expand-6968"><a href="#expand-6968"><span class="linenos">6968</span></a> <span class="n">sources</span> <span class="o">=</span> <span class="p">{</span><span class="n">normalize_table_name</span><span class="p">(</span><span class="n">k</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">v</span> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">sources</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span>
+</span><span id="expand-6969"><a href="#expand-6969"><span class="linenos">6969</span></a>
+</span><span id="expand-6970"><a href="#expand-6970"><span class="linenos">6970</span></a> <span class="k">def</span> <span class="nf">_expand</span><span class="p">(</span><span class="n">node</span><span class="p">:</span> <span class="n">Expression</span><span class="p">):</span>
+</span><span id="expand-6971"><a href="#expand-6971"><span class="linenos">6971</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">Table</span><span class="p">):</span>
+</span><span id="expand-6972"><a href="#expand-6972"><span class="linenos">6972</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">normalize_table_name</span><span class="p">(</span><span class="n">node</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="expand-6973"><a href="#expand-6973"><span class="linenos">6973</span></a> <span class="n">source</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">name</span><span class="p">)</span>
+</span><span id="expand-6974"><a href="#expand-6974"><span class="linenos">6974</span></a> <span class="k">if</span> <span class="n">source</span><span class="p">:</span>
+</span><span id="expand-6975"><a href="#expand-6975"><span class="linenos">6975</span></a> <span class="n">subquery</span> <span class="o">=</span> <span class="n">source</span><span class="o">.</span><span class="n">subquery</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">alias</span> <span class="ow">or</span> <span class="n">name</span><span class="p">)</span>
+</span><span id="expand-6976"><a href="#expand-6976"><span class="linenos">6976</span></a> <span class="n">subquery</span><span class="o">.</span><span class="n">comments</span> <span class="o">=</span> <span class="p">[</span><span class="sa">f</span><span class="s2">&quot;source: </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">]</span>
+</span><span id="expand-6977"><a href="#expand-6977"><span class="linenos">6977</span></a> <span class="k">return</span> <span class="n">subquery</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</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="expand-6978"><a href="#expand-6978"><span class="linenos">6978</span></a> <span class="k">return</span> <span class="n">node</span>
+</span><span id="expand-6979"><a href="#expand-6979"><span class="linenos">6979</span></a>
+</span><span id="expand-6980"><a href="#expand-6980"><span class="linenos">6980</span></a> <span class="k">return</span> <span class="n">expression</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span><span class="n">_expand</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span>
</span></pre></div>
@@ -90902,67 +90904,67 @@ True: Always quote.</li>
</div>
<a class="headerlink" href="#func"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="func-6982"><a href="#func-6982"><span class="linenos">6982</span></a><span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <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 class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Func</span><span class="p">:</span>
-</span><span id="func-6983"><a href="#func-6983"><span class="linenos">6983</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="func-6984"><a href="#func-6984"><span class="linenos">6984</span></a><span class="sd"> Returns a Func expression.</span>
-</span><span id="func-6985"><a href="#func-6985"><span class="linenos">6985</span></a>
-</span><span id="func-6986"><a href="#func-6986"><span class="linenos">6986</span></a><span class="sd"> Examples:</span>
-</span><span id="func-6987"><a href="#func-6987"><span class="linenos">6987</span></a><span class="sd"> &gt;&gt;&gt; func(&quot;abs&quot;, 5).sql()</span>
-</span><span id="func-6988"><a href="#func-6988"><span class="linenos">6988</span></a><span class="sd"> &#39;ABS(5)&#39;</span>
-</span><span id="func-6989"><a href="#func-6989"><span class="linenos">6989</span></a>
-</span><span id="func-6990"><a href="#func-6990"><span class="linenos">6990</span></a><span class="sd"> &gt;&gt;&gt; func(&quot;cast&quot;, this=5, to=DataType.build(&quot;DOUBLE&quot;)).sql()</span>
-</span><span id="func-6991"><a href="#func-6991"><span class="linenos">6991</span></a><span class="sd"> &#39;CAST(5 AS DOUBLE)&#39;</span>
-</span><span id="func-6992"><a href="#func-6992"><span class="linenos">6992</span></a>
-</span><span id="func-6993"><a href="#func-6993"><span class="linenos">6993</span></a><span class="sd"> Args:</span>
-</span><span id="func-6994"><a href="#func-6994"><span class="linenos">6994</span></a><span class="sd"> name: the name of the function to build.</span>
-</span><span id="func-6995"><a href="#func-6995"><span class="linenos">6995</span></a><span class="sd"> args: the args used to instantiate the function of interest.</span>
-</span><span id="func-6996"><a href="#func-6996"><span class="linenos">6996</span></a><span class="sd"> copy: whether or not to copy the argument expressions.</span>
-</span><span id="func-6997"><a href="#func-6997"><span class="linenos">6997</span></a><span class="sd"> dialect: the source dialect.</span>
-</span><span id="func-6998"><a href="#func-6998"><span class="linenos">6998</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span>
-</span><span id="func-6999"><a href="#func-6999"><span class="linenos">6999</span></a>
-</span><span id="func-7000"><a href="#func-7000"><span class="linenos">7000</span></a><span class="sd"> Note:</span>
-</span><span id="func-7001"><a href="#func-7001"><span class="linenos">7001</span></a><span class="sd"> The arguments `args` and `kwargs` are mutually exclusive.</span>
-</span><span id="func-7002"><a href="#func-7002"><span class="linenos">7002</span></a>
-</span><span id="func-7003"><a href="#func-7003"><span class="linenos">7003</span></a><span class="sd"> Returns:</span>
-</span><span id="func-7004"><a href="#func-7004"><span class="linenos">7004</span></a><span class="sd"> An instance of the function of interest, or an anonymous function, if `name` doesn&#39;t</span>
-</span><span id="func-7005"><a href="#func-7005"><span class="linenos">7005</span></a><span class="sd"> correspond to an existing `sqlglot.expressions.Func` class.</span>
-</span><span id="func-7006"><a href="#func-7006"><span class="linenos">7006</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="func-7007"><a href="#func-7007"><span class="linenos">7007</span></a> <span class="k">if</span> <span class="n">args</span> <span class="ow">and</span> <span class="n">kwargs</span><span class="p">:</span>
-</span><span id="func-7008"><a href="#func-7008"><span class="linenos">7008</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Can&#39;t use both args and kwargs to instantiate a function.&quot;</span><span class="p">)</span>
-</span><span id="func-7009"><a href="#func-7009"><span class="linenos">7009</span></a>
-</span><span id="func-7010"><a href="#func-7010"><span class="linenos">7010</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects.dialect</span> <span class="kn">import</span> <span class="n">Dialect</span>
-</span><span id="func-7011"><a href="#func-7011"><span class="linenos">7011</span></a>
-</span><span id="func-7012"><a href="#func-7012"><span class="linenos">7012</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="func-7013"><a href="#func-7013"><span class="linenos">7013</span></a>
-</span><span id="func-7014"><a href="#func-7014"><span class="linenos">7014</span></a> <span class="n">converted</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">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">arg</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">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">]</span>
-</span><span id="func-7015"><a href="#func-7015"><span class="linenos">7015</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="n">key</span><span class="p">:</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">value</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">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span>
-</span><span id="func-7016"><a href="#func-7016"><span class="linenos">7016</span></a>
-</span><span id="func-7017"><a href="#func-7017"><span class="linenos">7017</span></a> <span class="n">constructor</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parser_class</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span>
-</span><span id="func-7018"><a href="#func-7018"><span class="linenos">7018</span></a> <span class="k">if</span> <span class="n">constructor</span><span class="p">:</span>
-</span><span id="func-7019"><a href="#func-7019"><span class="linenos">7019</span></a> <span class="k">if</span> <span class="n">converted</span><span class="p">:</span>
-</span><span id="func-7020"><a href="#func-7020"><span class="linenos">7020</span></a> <span class="k">if</span> <span class="s2">&quot;dialect&quot;</span> <span class="ow">in</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__code__</span><span class="o">.</span><span class="n">co_varnames</span><span class="p">:</span>
-</span><span id="func-7021"><a href="#func-7021"><span class="linenos">7021</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="n">converted</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="func-7022"><a href="#func-7022"><span class="linenos">7022</span></a> <span class="k">else</span><span class="p">:</span>
-</span><span id="func-7023"><a href="#func-7023"><span class="linenos">7023</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="n">converted</span><span class="p">)</span>
-</span><span id="func-7024"><a href="#func-7024"><span class="linenos">7024</span></a> <span class="k">elif</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;from_arg_list&quot;</span><span class="p">:</span>
-</span><span id="func-7025"><a href="#func-7025"><span class="linenos">7025</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__self__</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span>
-</span><span id="func-7026"><a href="#func-7026"><span class="linenos">7026</span></a> <span class="k">else</span><span class="p">:</span>
-</span><span id="func-7027"><a href="#func-7027"><span class="linenos">7027</span></a> <span class="n">constructor</span> <span class="o">=</span> <span class="n">FUNCTION_BY_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span>
-</span><span id="func-7028"><a href="#func-7028"><span class="linenos">7028</span></a> <span class="k">if</span> <span class="n">constructor</span><span class="p">:</span>
-</span><span id="func-7029"><a href="#func-7029"><span class="linenos">7029</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
-</span><span id="func-7030"><a href="#func-7030"><span class="linenos">7030</span></a> <span class="k">else</span><span class="p">:</span>
-</span><span id="func-7031"><a href="#func-7031"><span class="linenos">7031</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
-</span><span id="func-7032"><a href="#func-7032"><span class="linenos">7032</span></a> <span class="sa">f</span><span class="s2">&quot;Unable to convert &#39;</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">&#39; into a Func. Either manually construct &quot;</span>
-</span><span id="func-7033"><a href="#func-7033"><span class="linenos">7033</span></a> <span class="s2">&quot;the Func expression of interest or parse the function call.&quot;</span>
-</span><span id="func-7034"><a href="#func-7034"><span class="linenos">7034</span></a> <span class="p">)</span>
-</span><span id="func-7035"><a href="#func-7035"><span class="linenos">7035</span></a> <span class="k">else</span><span class="p">:</span>
-</span><span id="func-7036"><a href="#func-7036"><span class="linenos">7036</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="n">kwargs</span> <span class="ow">or</span> <span class="p">{</span><span class="s2">&quot;expressions&quot;</span><span class="p">:</span> <span class="n">converted</span><span class="p">}</span>
-</span><span id="func-7037"><a href="#func-7037"><span class="linenos">7037</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">Anonymous</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
-</span><span id="func-7038"><a href="#func-7038"><span class="linenos">7038</span></a>
-</span><span id="func-7039"><a href="#func-7039"><span class="linenos">7039</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">function</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">converted</span><span class="p">):</span>
-</span><span id="func-7040"><a href="#func-7040"><span class="linenos">7040</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span>
-</span><span id="func-7041"><a href="#func-7041"><span class="linenos">7041</span></a>
-</span><span id="func-7042"><a href="#func-7042"><span class="linenos">7042</span></a> <span class="k">return</span> <span class="n">function</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="func-6983"><a href="#func-6983"><span class="linenos">6983</span></a><span class="k">def</span> <span class="nf">func</span><span class="p">(</span><span class="n">name</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <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 class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Func</span><span class="p">:</span>
+</span><span id="func-6984"><a href="#func-6984"><span class="linenos">6984</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="func-6985"><a href="#func-6985"><span class="linenos">6985</span></a><span class="sd"> Returns a Func expression.</span>
+</span><span id="func-6986"><a href="#func-6986"><span class="linenos">6986</span></a>
+</span><span id="func-6987"><a href="#func-6987"><span class="linenos">6987</span></a><span class="sd"> Examples:</span>
+</span><span id="func-6988"><a href="#func-6988"><span class="linenos">6988</span></a><span class="sd"> &gt;&gt;&gt; func(&quot;abs&quot;, 5).sql()</span>
+</span><span id="func-6989"><a href="#func-6989"><span class="linenos">6989</span></a><span class="sd"> &#39;ABS(5)&#39;</span>
+</span><span id="func-6990"><a href="#func-6990"><span class="linenos">6990</span></a>
+</span><span id="func-6991"><a href="#func-6991"><span class="linenos">6991</span></a><span class="sd"> &gt;&gt;&gt; func(&quot;cast&quot;, this=5, to=DataType.build(&quot;DOUBLE&quot;)).sql()</span>
+</span><span id="func-6992"><a href="#func-6992"><span class="linenos">6992</span></a><span class="sd"> &#39;CAST(5 AS DOUBLE)&#39;</span>
+</span><span id="func-6993"><a href="#func-6993"><span class="linenos">6993</span></a>
+</span><span id="func-6994"><a href="#func-6994"><span class="linenos">6994</span></a><span class="sd"> Args:</span>
+</span><span id="func-6995"><a href="#func-6995"><span class="linenos">6995</span></a><span class="sd"> name: the name of the function to build.</span>
+</span><span id="func-6996"><a href="#func-6996"><span class="linenos">6996</span></a><span class="sd"> args: the args used to instantiate the function of interest.</span>
+</span><span id="func-6997"><a href="#func-6997"><span class="linenos">6997</span></a><span class="sd"> copy: whether or not to copy the argument expressions.</span>
+</span><span id="func-6998"><a href="#func-6998"><span class="linenos">6998</span></a><span class="sd"> dialect: the source dialect.</span>
+</span><span id="func-6999"><a href="#func-6999"><span class="linenos">6999</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span>
+</span><span id="func-7000"><a href="#func-7000"><span class="linenos">7000</span></a>
+</span><span id="func-7001"><a href="#func-7001"><span class="linenos">7001</span></a><span class="sd"> Note:</span>
+</span><span id="func-7002"><a href="#func-7002"><span class="linenos">7002</span></a><span class="sd"> The arguments `args` and `kwargs` are mutually exclusive.</span>
+</span><span id="func-7003"><a href="#func-7003"><span class="linenos">7003</span></a>
+</span><span id="func-7004"><a href="#func-7004"><span class="linenos">7004</span></a><span class="sd"> Returns:</span>
+</span><span id="func-7005"><a href="#func-7005"><span class="linenos">7005</span></a><span class="sd"> An instance of the function of interest, or an anonymous function, if `name` doesn&#39;t</span>
+</span><span id="func-7006"><a href="#func-7006"><span class="linenos">7006</span></a><span class="sd"> correspond to an existing `sqlglot.expressions.Func` class.</span>
+</span><span id="func-7007"><a href="#func-7007"><span class="linenos">7007</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="func-7008"><a href="#func-7008"><span class="linenos">7008</span></a> <span class="k">if</span> <span class="n">args</span> <span class="ow">and</span> <span class="n">kwargs</span><span class="p">:</span>
+</span><span id="func-7009"><a href="#func-7009"><span class="linenos">7009</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;Can&#39;t use both args and kwargs to instantiate a function.&quot;</span><span class="p">)</span>
+</span><span id="func-7010"><a href="#func-7010"><span class="linenos">7010</span></a>
+</span><span id="func-7011"><a href="#func-7011"><span class="linenos">7011</span></a> <span class="kn">from</span> <span class="nn">sqlglot.dialects.dialect</span> <span class="kn">import</span> <span class="n">Dialect</span>
+</span><span id="func-7012"><a href="#func-7012"><span class="linenos">7012</span></a>
+</span><span id="func-7013"><a href="#func-7013"><span class="linenos">7013</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="func-7014"><a href="#func-7014"><span class="linenos">7014</span></a>
+</span><span id="func-7015"><a href="#func-7015"><span class="linenos">7015</span></a> <span class="n">converted</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">Expression</span><span class="p">]</span> <span class="o">=</span> <span class="p">[</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">arg</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">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">arg</span> <span class="ow">in</span> <span class="n">args</span><span class="p">]</span>
+</span><span id="func-7016"><a href="#func-7016"><span class="linenos">7016</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="p">{</span><span class="n">key</span><span class="p">:</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">value</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">copy</span><span class="o">=</span><span class="n">copy</span><span class="p">)</span> <span class="k">for</span> <span class="n">key</span><span class="p">,</span> <span class="n">value</span> <span class="ow">in</span> <span class="n">kwargs</span><span class="o">.</span><span class="n">items</span><span class="p">()}</span>
+</span><span id="func-7017"><a href="#func-7017"><span class="linenos">7017</span></a>
+</span><span id="func-7018"><a href="#func-7018"><span class="linenos">7018</span></a> <span class="n">constructor</span> <span class="o">=</span> <span class="n">dialect</span><span class="o">.</span><span class="n">parser_class</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span>
+</span><span id="func-7019"><a href="#func-7019"><span class="linenos">7019</span></a> <span class="k">if</span> <span class="n">constructor</span><span class="p">:</span>
+</span><span id="func-7020"><a href="#func-7020"><span class="linenos">7020</span></a> <span class="k">if</span> <span class="n">converted</span><span class="p">:</span>
+</span><span id="func-7021"><a href="#func-7021"><span class="linenos">7021</span></a> <span class="k">if</span> <span class="s2">&quot;dialect&quot;</span> <span class="ow">in</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__code__</span><span class="o">.</span><span class="n">co_varnames</span><span class="p">:</span>
+</span><span id="func-7022"><a href="#func-7022"><span class="linenos">7022</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="n">converted</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="func-7023"><a href="#func-7023"><span class="linenos">7023</span></a> <span class="k">else</span><span class="p">:</span>
+</span><span id="func-7024"><a href="#func-7024"><span class="linenos">7024</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="n">converted</span><span class="p">)</span>
+</span><span id="func-7025"><a href="#func-7025"><span class="linenos">7025</span></a> <span class="k">elif</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;from_arg_list&quot;</span><span class="p">:</span>
+</span><span id="func-7026"><a href="#func-7026"><span class="linenos">7026</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="o">.</span><span class="vm">__self__</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> <span class="c1"># type: ignore</span>
+</span><span id="func-7027"><a href="#func-7027"><span class="linenos">7027</span></a> <span class="k">else</span><span class="p">:</span>
+</span><span id="func-7028"><a href="#func-7028"><span class="linenos">7028</span></a> <span class="n">constructor</span> <span class="o">=</span> <span class="n">FUNCTION_BY_NAME</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">name</span><span class="o">.</span><span class="n">upper</span><span class="p">())</span>
+</span><span id="func-7029"><a href="#func-7029"><span class="linenos">7029</span></a> <span class="k">if</span> <span class="n">constructor</span><span class="p">:</span>
+</span><span id="func-7030"><a href="#func-7030"><span class="linenos">7030</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">constructor</span><span class="p">(</span><span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+</span><span id="func-7031"><a href="#func-7031"><span class="linenos">7031</span></a> <span class="k">else</span><span class="p">:</span>
+</span><span id="func-7032"><a href="#func-7032"><span class="linenos">7032</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span>
+</span><span id="func-7033"><a href="#func-7033"><span class="linenos">7033</span></a> <span class="sa">f</span><span class="s2">&quot;Unable to convert &#39;</span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">&#39; into a Func. Either manually construct &quot;</span>
+</span><span id="func-7034"><a href="#func-7034"><span class="linenos">7034</span></a> <span class="s2">&quot;the Func expression of interest or parse the function call.&quot;</span>
+</span><span id="func-7035"><a href="#func-7035"><span class="linenos">7035</span></a> <span class="p">)</span>
+</span><span id="func-7036"><a href="#func-7036"><span class="linenos">7036</span></a> <span class="k">else</span><span class="p">:</span>
+</span><span id="func-7037"><a href="#func-7037"><span class="linenos">7037</span></a> <span class="n">kwargs</span> <span class="o">=</span> <span class="n">kwargs</span> <span class="ow">or</span> <span class="p">{</span><span class="s2">&quot;expressions&quot;</span><span class="p">:</span> <span class="n">converted</span><span class="p">}</span>
+</span><span id="func-7038"><a href="#func-7038"><span class="linenos">7038</span></a> <span class="n">function</span> <span class="o">=</span> <span class="n">Anonymous</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">name</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+</span><span id="func-7039"><a href="#func-7039"><span class="linenos">7039</span></a>
+</span><span id="func-7040"><a href="#func-7040"><span class="linenos">7040</span></a> <span class="k">for</span> <span class="n">error_message</span> <span class="ow">in</span> <span class="n">function</span><span class="o">.</span><span class="n">error_messages</span><span class="p">(</span><span class="n">converted</span><span class="p">):</span>
+</span><span id="func-7041"><a href="#func-7041"><span class="linenos">7041</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="n">error_message</span><span class="p">)</span>
+</span><span id="func-7042"><a href="#func-7042"><span class="linenos">7042</span></a>
+</span><span id="func-7043"><a href="#func-7043"><span class="linenos">7043</span></a> <span class="k">return</span> <span class="n">function</span>
</span></pre></div>
@@ -91021,25 +91023,25 @@ True: Always quote.</li>
</div>
<a class="headerlink" href="#case"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="case-7045"><a href="#case-7045"><span class="linenos">7045</span></a><span class="k">def</span> <span class="nf">case</span><span class="p">(</span>
-</span><span id="case-7046"><a href="#case-7046"><span class="linenos">7046</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
-</span><span id="case-7047"><a href="#case-7047"><span class="linenos">7047</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span>
-</span><span id="case-7048"><a href="#case-7048"><span class="linenos">7048</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Case</span><span class="p">:</span>
-</span><span id="case-7049"><a href="#case-7049"><span class="linenos">7049</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="case-7050"><a href="#case-7050"><span class="linenos">7050</span></a><span class="sd"> Initialize a CASE statement.</span>
-</span><span id="case-7051"><a href="#case-7051"><span class="linenos">7051</span></a>
-</span><span id="case-7052"><a href="#case-7052"><span class="linenos">7052</span></a><span class="sd"> Example:</span>
-</span><span id="case-7053"><a href="#case-7053"><span class="linenos">7053</span></a><span class="sd"> case().when(&quot;a = 1&quot;, &quot;foo&quot;).else_(&quot;bar&quot;)</span>
-</span><span id="case-7054"><a href="#case-7054"><span class="linenos">7054</span></a>
-</span><span id="case-7055"><a href="#case-7055"><span class="linenos">7055</span></a><span class="sd"> Args:</span>
-</span><span id="case-7056"><a href="#case-7056"><span class="linenos">7056</span></a><span class="sd"> expression: Optionally, the input expression (not all dialects support this)</span>
-</span><span id="case-7057"><a href="#case-7057"><span class="linenos">7057</span></a><span class="sd"> **opts: Extra keyword arguments for parsing `expression`</span>
-</span><span id="case-7058"><a href="#case-7058"><span class="linenos">7058</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="case-7059"><a href="#case-7059"><span class="linenos">7059</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
-</span><span id="case-7060"><a href="#case-7060"><span class="linenos">7060</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span>
-</span><span id="case-7061"><a href="#case-7061"><span class="linenos">7061</span></a> <span class="k">else</span><span class="p">:</span>
-</span><span id="case-7062"><a href="#case-7062"><span class="linenos">7062</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span>
-</span><span id="case-7063"><a href="#case-7063"><span class="linenos">7063</span></a> <span class="k">return</span> <span class="n">Case</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">ifs</span><span class="o">=</span><span class="p">[])</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="case-7046"><a href="#case-7046"><span class="linenos">7046</span></a><span class="k">def</span> <span class="nf">case</span><span class="p">(</span>
+</span><span id="case-7047"><a href="#case-7047"><span class="linenos">7047</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ExpOrStr</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
+</span><span id="case-7048"><a href="#case-7048"><span class="linenos">7048</span></a> <span class="o">**</span><span class="n">opts</span><span class="p">,</span>
+</span><span id="case-7049"><a href="#case-7049"><span class="linenos">7049</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Case</span><span class="p">:</span>
+</span><span id="case-7050"><a href="#case-7050"><span class="linenos">7050</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="case-7051"><a href="#case-7051"><span class="linenos">7051</span></a><span class="sd"> Initialize a CASE statement.</span>
+</span><span id="case-7052"><a href="#case-7052"><span class="linenos">7052</span></a>
+</span><span id="case-7053"><a href="#case-7053"><span class="linenos">7053</span></a><span class="sd"> Example:</span>
+</span><span id="case-7054"><a href="#case-7054"><span class="linenos">7054</span></a><span class="sd"> case().when(&quot;a = 1&quot;, &quot;foo&quot;).else_(&quot;bar&quot;)</span>
+</span><span id="case-7055"><a href="#case-7055"><span class="linenos">7055</span></a>
+</span><span id="case-7056"><a href="#case-7056"><span class="linenos">7056</span></a><span class="sd"> Args:</span>
+</span><span id="case-7057"><a href="#case-7057"><span class="linenos">7057</span></a><span class="sd"> expression: Optionally, the input expression (not all dialects support this)</span>
+</span><span id="case-7058"><a href="#case-7058"><span class="linenos">7058</span></a><span class="sd"> **opts: Extra keyword arguments for parsing `expression`</span>
+</span><span id="case-7059"><a href="#case-7059"><span class="linenos">7059</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="case-7060"><a href="#case-7060"><span class="linenos">7060</span></a> <span class="k">if</span> <span class="n">expression</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+</span><span id="case-7061"><a href="#case-7061"><span class="linenos">7061</span></a> <span class="n">this</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span>
+</span><span id="case-7062"><a href="#case-7062"><span class="linenos">7062</span></a> <span class="k">else</span><span class="p">:</span>
+</span><span id="case-7063"><a href="#case-7063"><span class="linenos">7063</span></a> <span class="n">this</span> <span class="o">=</span> <span class="kc">None</span>
+</span><span id="case-7064"><a href="#case-7064"><span class="linenos">7064</span></a> <span class="k">return</span> <span class="n">Case</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">this</span><span class="p">,</span> <span class="n">ifs</span><span class="o">=</span><span class="p">[])</span>
</span></pre></div>
@@ -91072,25 +91074,25 @@ True: Always quote.</li>
</div>
<a class="headerlink" href="#cast_unless"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="cast_unless-7066"><a href="#cast_unless-7066"><span class="linenos">7066</span></a><span class="k">def</span> <span class="nf">cast_unless</span><span class="p">(</span>
-</span><span id="cast_unless-7067"><a href="#cast_unless-7067"><span class="linenos">7067</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span>
-</span><span id="cast_unless-7068"><a href="#cast_unless-7068"><span class="linenos">7068</span></a> <span class="n">to</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">,</span>
-</span><span id="cast_unless-7069"><a href="#cast_unless-7069"><span class="linenos">7069</span></a> <span class="o">*</span><span class="n">types</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">,</span>
-</span><span id="cast_unless-7070"><a href="#cast_unless-7070"><span class="linenos">7070</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="cast_unless-7071"><a href="#cast_unless-7071"><span class="linenos">7071</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Expression</span> <span class="o">|</span> <span class="n">Cast</span><span class="p">:</span>
-</span><span id="cast_unless-7072"><a href="#cast_unless-7072"><span class="linenos">7072</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="cast_unless-7073"><a href="#cast_unless-7073"><span class="linenos">7073</span></a><span class="sd"> Cast an expression to a data type unless it is a specified type.</span>
-</span><span id="cast_unless-7074"><a href="#cast_unless-7074"><span class="linenos">7074</span></a>
-</span><span id="cast_unless-7075"><a href="#cast_unless-7075"><span class="linenos">7075</span></a><span class="sd"> Args:</span>
-</span><span id="cast_unless-7076"><a href="#cast_unless-7076"><span class="linenos">7076</span></a><span class="sd"> expression: The expression to cast.</span>
-</span><span id="cast_unless-7077"><a href="#cast_unless-7077"><span class="linenos">7077</span></a><span class="sd"> to: The data type to cast to.</span>
-</span><span id="cast_unless-7078"><a href="#cast_unless-7078"><span class="linenos">7078</span></a><span class="sd"> **types: The types to exclude from casting.</span>
-</span><span id="cast_unless-7079"><a href="#cast_unless-7079"><span class="linenos">7079</span></a><span class="sd"> **opts: Extra keyword arguments for parsing `expression`</span>
-</span><span id="cast_unless-7080"><a href="#cast_unless-7080"><span class="linenos">7080</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="cast_unless-7081"><a href="#cast_unless-7081"><span class="linenos">7081</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span>
-</span><span id="cast_unless-7082"><a href="#cast_unless-7082"><span class="linenos">7082</span></a> <span class="k">if</span> <span class="n">expr</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="o">*</span><span class="n">types</span><span class="p">):</span>
-</span><span id="cast_unless-7083"><a href="#cast_unless-7083"><span class="linenos">7083</span></a> <span class="k">return</span> <span class="n">expr</span>
-</span><span id="cast_unless-7084"><a href="#cast_unless-7084"><span class="linenos">7084</span></a> <span class="k">return</span> <span class="n">cast</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">to</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="cast_unless-7067"><a href="#cast_unless-7067"><span class="linenos">7067</span></a><span class="k">def</span> <span class="nf">cast_unless</span><span class="p">(</span>
+</span><span id="cast_unless-7068"><a href="#cast_unless-7068"><span class="linenos">7068</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span>
+</span><span id="cast_unless-7069"><a href="#cast_unless-7069"><span class="linenos">7069</span></a> <span class="n">to</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">,</span>
+</span><span id="cast_unless-7070"><a href="#cast_unless-7070"><span class="linenos">7070</span></a> <span class="o">*</span><span class="n">types</span><span class="p">:</span> <span class="n">DATA_TYPE</span><span class="p">,</span>
+</span><span id="cast_unless-7071"><a href="#cast_unless-7071"><span class="linenos">7071</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="cast_unless-7072"><a href="#cast_unless-7072"><span class="linenos">7072</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Expression</span> <span class="o">|</span> <span class="n">Cast</span><span class="p">:</span>
+</span><span id="cast_unless-7073"><a href="#cast_unless-7073"><span class="linenos">7073</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="cast_unless-7074"><a href="#cast_unless-7074"><span class="linenos">7074</span></a><span class="sd"> Cast an expression to a data type unless it is a specified type.</span>
+</span><span id="cast_unless-7075"><a href="#cast_unless-7075"><span class="linenos">7075</span></a>
+</span><span id="cast_unless-7076"><a href="#cast_unless-7076"><span class="linenos">7076</span></a><span class="sd"> Args:</span>
+</span><span id="cast_unless-7077"><a href="#cast_unless-7077"><span class="linenos">7077</span></a><span class="sd"> expression: The expression to cast.</span>
+</span><span id="cast_unless-7078"><a href="#cast_unless-7078"><span class="linenos">7078</span></a><span class="sd"> to: The data type to cast to.</span>
+</span><span id="cast_unless-7079"><a href="#cast_unless-7079"><span class="linenos">7079</span></a><span class="sd"> **types: The types to exclude from casting.</span>
+</span><span id="cast_unless-7080"><a href="#cast_unless-7080"><span class="linenos">7080</span></a><span class="sd"> **opts: Extra keyword arguments for parsing `expression`</span>
+</span><span id="cast_unless-7081"><a href="#cast_unless-7081"><span class="linenos">7081</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="cast_unless-7082"><a href="#cast_unless-7082"><span class="linenos">7082</span></a> <span class="n">expr</span> <span class="o">=</span> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span>
+</span><span id="cast_unless-7083"><a href="#cast_unless-7083"><span class="linenos">7083</span></a> <span class="k">if</span> <span class="n">expr</span><span class="o">.</span><span class="n">is_type</span><span class="p">(</span><span class="o">*</span><span class="n">types</span><span class="p">):</span>
+</span><span id="cast_unless-7084"><a href="#cast_unless-7084"><span class="linenos">7084</span></a> <span class="k">return</span> <span class="n">expr</span>
+</span><span id="cast_unless-7085"><a href="#cast_unless-7085"><span class="linenos">7085</span></a> <span class="k">return</span> <span class="n">cast</span><span class="p">(</span><span class="n">expr</span><span class="p">,</span> <span class="n">to</span><span class="p">,</span> <span class="o">**</span><span class="n">opts</span><span class="p">)</span>
</span></pre></div>
@@ -91119,31 +91121,31 @@ True: Always quote.</li>
</div>
<a class="headerlink" href="#array"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="array-7087"><a href="#array-7087"><span class="linenos">7087</span></a><span class="k">def</span> <span class="nf">array</span><span class="p">(</span>
-</span><span id="array-7088"><a href="#array-7088"><span class="linenos">7088</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <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 class="o">**</span><span class="n">kwargs</span>
-</span><span id="array-7089"><a href="#array-7089"><span class="linenos">7089</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Array</span><span class="p">:</span>
-</span><span id="array-7090"><a href="#array-7090"><span class="linenos">7090</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="array-7091"><a href="#array-7091"><span class="linenos">7091</span></a><span class="sd"> Returns an array.</span>
-</span><span id="array-7092"><a href="#array-7092"><span class="linenos">7092</span></a>
-</span><span id="array-7093"><a href="#array-7093"><span class="linenos">7093</span></a><span class="sd"> Examples:</span>
-</span><span id="array-7094"><a href="#array-7094"><span class="linenos">7094</span></a><span class="sd"> &gt;&gt;&gt; array(1, &#39;x&#39;).sql()</span>
-</span><span id="array-7095"><a href="#array-7095"><span class="linenos">7095</span></a><span class="sd"> &#39;ARRAY(1, x)&#39;</span>
-</span><span id="array-7096"><a href="#array-7096"><span class="linenos">7096</span></a>
-</span><span id="array-7097"><a href="#array-7097"><span class="linenos">7097</span></a><span class="sd"> Args:</span>
-</span><span id="array-7098"><a href="#array-7098"><span class="linenos">7098</span></a><span class="sd"> expressions: the expressions to add to the array.</span>
-</span><span id="array-7099"><a href="#array-7099"><span class="linenos">7099</span></a><span class="sd"> copy: whether or not to copy the argument expressions.</span>
-</span><span id="array-7100"><a href="#array-7100"><span class="linenos">7100</span></a><span class="sd"> dialect: the source dialect.</span>
-</span><span id="array-7101"><a href="#array-7101"><span class="linenos">7101</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span>
-</span><span id="array-7102"><a href="#array-7102"><span class="linenos">7102</span></a>
-</span><span id="array-7103"><a href="#array-7103"><span class="linenos">7103</span></a><span class="sd"> Returns:</span>
-</span><span id="array-7104"><a href="#array-7104"><span class="linenos">7104</span></a><span class="sd"> An array expression.</span>
-</span><span id="array-7105"><a href="#array-7105"><span class="linenos">7105</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="array-7106"><a href="#array-7106"><span class="linenos">7106</span></a> <span class="k">return</span> <span class="n">Array</span><span class="p">(</span>
-</span><span id="array-7107"><a href="#array-7107"><span class="linenos">7107</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span>
-</span><span id="array-7108"><a href="#array-7108"><span class="linenos">7108</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</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="o">**</span><span class="n">kwargs</span><span class="p">)</span>
-</span><span id="array-7109"><a href="#array-7109"><span class="linenos">7109</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span>
-</span><span id="array-7110"><a href="#array-7110"><span class="linenos">7110</span></a> <span class="p">]</span>
-</span><span id="array-7111"><a href="#array-7111"><span class="linenos">7111</span></a> <span class="p">)</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="array-7088"><a href="#array-7088"><span class="linenos">7088</span></a><span class="k">def</span> <span class="nf">array</span><span class="p">(</span>
+</span><span id="array-7089"><a href="#array-7089"><span class="linenos">7089</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <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 class="o">**</span><span class="n">kwargs</span>
+</span><span id="array-7090"><a href="#array-7090"><span class="linenos">7090</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Array</span><span class="p">:</span>
+</span><span id="array-7091"><a href="#array-7091"><span class="linenos">7091</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="array-7092"><a href="#array-7092"><span class="linenos">7092</span></a><span class="sd"> Returns an array.</span>
+</span><span id="array-7093"><a href="#array-7093"><span class="linenos">7093</span></a>
+</span><span id="array-7094"><a href="#array-7094"><span class="linenos">7094</span></a><span class="sd"> Examples:</span>
+</span><span id="array-7095"><a href="#array-7095"><span class="linenos">7095</span></a><span class="sd"> &gt;&gt;&gt; array(1, &#39;x&#39;).sql()</span>
+</span><span id="array-7096"><a href="#array-7096"><span class="linenos">7096</span></a><span class="sd"> &#39;ARRAY(1, x)&#39;</span>
+</span><span id="array-7097"><a href="#array-7097"><span class="linenos">7097</span></a>
+</span><span id="array-7098"><a href="#array-7098"><span class="linenos">7098</span></a><span class="sd"> Args:</span>
+</span><span id="array-7099"><a href="#array-7099"><span class="linenos">7099</span></a><span class="sd"> expressions: the expressions to add to the array.</span>
+</span><span id="array-7100"><a href="#array-7100"><span class="linenos">7100</span></a><span class="sd"> copy: whether or not to copy the argument expressions.</span>
+</span><span id="array-7101"><a href="#array-7101"><span class="linenos">7101</span></a><span class="sd"> dialect: the source dialect.</span>
+</span><span id="array-7102"><a href="#array-7102"><span class="linenos">7102</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span>
+</span><span id="array-7103"><a href="#array-7103"><span class="linenos">7103</span></a>
+</span><span id="array-7104"><a href="#array-7104"><span class="linenos">7104</span></a><span class="sd"> Returns:</span>
+</span><span id="array-7105"><a href="#array-7105"><span class="linenos">7105</span></a><span class="sd"> An array expression.</span>
+</span><span id="array-7106"><a href="#array-7106"><span class="linenos">7106</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="array-7107"><a href="#array-7107"><span class="linenos">7107</span></a> <span class="k">return</span> <span class="n">Array</span><span class="p">(</span>
+</span><span id="array-7108"><a href="#array-7108"><span class="linenos">7108</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span>
+</span><span id="array-7109"><a href="#array-7109"><span class="linenos">7109</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</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="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+</span><span id="array-7110"><a href="#array-7110"><span class="linenos">7110</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span>
+</span><span id="array-7111"><a href="#array-7111"><span class="linenos">7111</span></a> <span class="p">]</span>
+</span><span id="array-7112"><a href="#array-7112"><span class="linenos">7112</span></a> <span class="p">)</span>
</span></pre></div>
@@ -91188,31 +91190,31 @@ True: Always quote.</li>
</div>
<a class="headerlink" href="#tuple_"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="tuple_-7114"><a href="#tuple_-7114"><span class="linenos">7114</span></a><span class="k">def</span> <span class="nf">tuple_</span><span class="p">(</span>
-</span><span id="tuple_-7115"><a href="#tuple_-7115"><span class="linenos">7115</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <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 class="o">**</span><span class="n">kwargs</span>
-</span><span id="tuple_-7116"><a href="#tuple_-7116"><span class="linenos">7116</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">:</span>
-</span><span id="tuple_-7117"><a href="#tuple_-7117"><span class="linenos">7117</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="tuple_-7118"><a href="#tuple_-7118"><span class="linenos">7118</span></a><span class="sd"> Returns an tuple.</span>
-</span><span id="tuple_-7119"><a href="#tuple_-7119"><span class="linenos">7119</span></a>
-</span><span id="tuple_-7120"><a href="#tuple_-7120"><span class="linenos">7120</span></a><span class="sd"> Examples:</span>
-</span><span id="tuple_-7121"><a href="#tuple_-7121"><span class="linenos">7121</span></a><span class="sd"> &gt;&gt;&gt; tuple_(1, &#39;x&#39;).sql()</span>
-</span><span id="tuple_-7122"><a href="#tuple_-7122"><span class="linenos">7122</span></a><span class="sd"> &#39;(1, x)&#39;</span>
-</span><span id="tuple_-7123"><a href="#tuple_-7123"><span class="linenos">7123</span></a>
-</span><span id="tuple_-7124"><a href="#tuple_-7124"><span class="linenos">7124</span></a><span class="sd"> Args:</span>
-</span><span id="tuple_-7125"><a href="#tuple_-7125"><span class="linenos">7125</span></a><span class="sd"> expressions: the expressions to add to the tuple.</span>
-</span><span id="tuple_-7126"><a href="#tuple_-7126"><span class="linenos">7126</span></a><span class="sd"> copy: whether or not to copy the argument expressions.</span>
-</span><span id="tuple_-7127"><a href="#tuple_-7127"><span class="linenos">7127</span></a><span class="sd"> dialect: the source dialect.</span>
-</span><span id="tuple_-7128"><a href="#tuple_-7128"><span class="linenos">7128</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span>
-</span><span id="tuple_-7129"><a href="#tuple_-7129"><span class="linenos">7129</span></a>
-</span><span id="tuple_-7130"><a href="#tuple_-7130"><span class="linenos">7130</span></a><span class="sd"> Returns:</span>
-</span><span id="tuple_-7131"><a href="#tuple_-7131"><span class="linenos">7131</span></a><span class="sd"> A tuple expression.</span>
-</span><span id="tuple_-7132"><a href="#tuple_-7132"><span class="linenos">7132</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="tuple_-7133"><a href="#tuple_-7133"><span class="linenos">7133</span></a> <span class="k">return</span> <span class="n">Tuple</span><span class="p">(</span>
-</span><span id="tuple_-7134"><a href="#tuple_-7134"><span class="linenos">7134</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span>
-</span><span id="tuple_-7135"><a href="#tuple_-7135"><span class="linenos">7135</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</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="o">**</span><span class="n">kwargs</span><span class="p">)</span>
-</span><span id="tuple_-7136"><a href="#tuple_-7136"><span class="linenos">7136</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span>
-</span><span id="tuple_-7137"><a href="#tuple_-7137"><span class="linenos">7137</span></a> <span class="p">]</span>
-</span><span id="tuple_-7138"><a href="#tuple_-7138"><span class="linenos">7138</span></a> <span class="p">)</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="tuple_-7115"><a href="#tuple_-7115"><span class="linenos">7115</span></a><span class="k">def</span> <span class="nf">tuple_</span><span class="p">(</span>
+</span><span id="tuple_-7116"><a href="#tuple_-7116"><span class="linenos">7116</span></a> <span class="o">*</span><span class="n">expressions</span><span class="p">:</span> <span class="n">ExpOrStr</span><span class="p">,</span> <span class="n">copy</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> <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 class="o">**</span><span class="n">kwargs</span>
+</span><span id="tuple_-7117"><a href="#tuple_-7117"><span class="linenos">7117</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">:</span>
+</span><span id="tuple_-7118"><a href="#tuple_-7118"><span class="linenos">7118</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="tuple_-7119"><a href="#tuple_-7119"><span class="linenos">7119</span></a><span class="sd"> Returns an tuple.</span>
+</span><span id="tuple_-7120"><a href="#tuple_-7120"><span class="linenos">7120</span></a>
+</span><span id="tuple_-7121"><a href="#tuple_-7121"><span class="linenos">7121</span></a><span class="sd"> Examples:</span>
+</span><span id="tuple_-7122"><a href="#tuple_-7122"><span class="linenos">7122</span></a><span class="sd"> &gt;&gt;&gt; tuple_(1, &#39;x&#39;).sql()</span>
+</span><span id="tuple_-7123"><a href="#tuple_-7123"><span class="linenos">7123</span></a><span class="sd"> &#39;(1, x)&#39;</span>
+</span><span id="tuple_-7124"><a href="#tuple_-7124"><span class="linenos">7124</span></a>
+</span><span id="tuple_-7125"><a href="#tuple_-7125"><span class="linenos">7125</span></a><span class="sd"> Args:</span>
+</span><span id="tuple_-7126"><a href="#tuple_-7126"><span class="linenos">7126</span></a><span class="sd"> expressions: the expressions to add to the tuple.</span>
+</span><span id="tuple_-7127"><a href="#tuple_-7127"><span class="linenos">7127</span></a><span class="sd"> copy: whether or not to copy the argument expressions.</span>
+</span><span id="tuple_-7128"><a href="#tuple_-7128"><span class="linenos">7128</span></a><span class="sd"> dialect: the source dialect.</span>
+</span><span id="tuple_-7129"><a href="#tuple_-7129"><span class="linenos">7129</span></a><span class="sd"> kwargs: the kwargs used to instantiate the function of interest.</span>
+</span><span id="tuple_-7130"><a href="#tuple_-7130"><span class="linenos">7130</span></a>
+</span><span id="tuple_-7131"><a href="#tuple_-7131"><span class="linenos">7131</span></a><span class="sd"> Returns:</span>
+</span><span id="tuple_-7132"><a href="#tuple_-7132"><span class="linenos">7132</span></a><span class="sd"> A tuple expression.</span>
+</span><span id="tuple_-7133"><a href="#tuple_-7133"><span class="linenos">7133</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="tuple_-7134"><a href="#tuple_-7134"><span class="linenos">7134</span></a> <span class="k">return</span> <span class="n">Tuple</span><span class="p">(</span>
+</span><span id="tuple_-7135"><a href="#tuple_-7135"><span class="linenos">7135</span></a> <span class="n">expressions</span><span class="o">=</span><span class="p">[</span>
+</span><span id="tuple_-7136"><a href="#tuple_-7136"><span class="linenos">7136</span></a> <span class="n">maybe_parse</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="n">copy</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="o">**</span><span class="n">kwargs</span><span class="p">)</span>
+</span><span id="tuple_-7137"><a href="#tuple_-7137"><span class="linenos">7137</span></a> <span class="k">for</span> <span class="n">expression</span> <span class="ow">in</span> <span class="n">expressions</span>
+</span><span id="tuple_-7138"><a href="#tuple_-7138"><span class="linenos">7138</span></a> <span class="p">]</span>
+</span><span id="tuple_-7139"><a href="#tuple_-7139"><span class="linenos">7139</span></a> <span class="p">)</span>
</span></pre></div>
@@ -91257,11 +91259,11 @@ True: Always quote.</li>
</div>
<a class="headerlink" href="#true"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="true-7141"><a href="#true-7141"><span class="linenos">7141</span></a><span class="k">def</span> <span class="nf">true</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">Boolean</span><span class="p">:</span>
-</span><span id="true-7142"><a href="#true-7142"><span class="linenos">7142</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="true-7143"><a href="#true-7143"><span class="linenos">7143</span></a><span class="sd"> Returns a true Boolean expression.</span>
-</span><span id="true-7144"><a href="#true-7144"><span class="linenos">7144</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="true-7145"><a href="#true-7145"><span class="linenos">7145</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="true-7142"><a href="#true-7142"><span class="linenos">7142</span></a><span class="k">def</span> <span class="nf">true</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">Boolean</span><span class="p">:</span>
+</span><span id="true-7143"><a href="#true-7143"><span class="linenos">7143</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="true-7144"><a href="#true-7144"><span class="linenos">7144</span></a><span class="sd"> Returns a true Boolean expression.</span>
+</span><span id="true-7145"><a href="#true-7145"><span class="linenos">7145</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="true-7146"><a href="#true-7146"><span class="linenos">7146</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span></pre></div>
@@ -91281,11 +91283,11 @@ True: Always quote.</li>
</div>
<a class="headerlink" href="#false"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="false-7148"><a href="#false-7148"><span class="linenos">7148</span></a><span class="k">def</span> <span class="nf">false</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">Boolean</span><span class="p">:</span>
-</span><span id="false-7149"><a href="#false-7149"><span class="linenos">7149</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="false-7150"><a href="#false-7150"><span class="linenos">7150</span></a><span class="sd"> Returns a false Boolean expression.</span>
-</span><span id="false-7151"><a href="#false-7151"><span class="linenos">7151</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="false-7152"><a href="#false-7152"><span class="linenos">7152</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="false-7149"><a href="#false-7149"><span class="linenos">7149</span></a><span class="k">def</span> <span class="nf">false</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">Boolean</span><span class="p">:</span>
+</span><span id="false-7150"><a href="#false-7150"><span class="linenos">7150</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="false-7151"><a href="#false-7151"><span class="linenos">7151</span></a><span class="sd"> Returns a false Boolean expression.</span>
+</span><span id="false-7152"><a href="#false-7152"><span class="linenos">7152</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="false-7153"><a href="#false-7153"><span class="linenos">7153</span></a> <span class="k">return</span> <span class="n">Boolean</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
</span></pre></div>
@@ -91305,11 +91307,11 @@ True: Always quote.</li>
</div>
<a class="headerlink" href="#null"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="null-7155"><a href="#null-7155"><span class="linenos">7155</span></a><span class="k">def</span> <span class="nf">null</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">Null</span><span class="p">:</span>
-</span><span id="null-7156"><a href="#null-7156"><span class="linenos">7156</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
-</span><span id="null-7157"><a href="#null-7157"><span class="linenos">7157</span></a><span class="sd"> Returns a Null expression.</span>
-</span><span id="null-7158"><a href="#null-7158"><span class="linenos">7158</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="null-7159"><a href="#null-7159"><span class="linenos">7159</span></a> <span class="k">return</span> <span class="n">Null</span><span class="p">()</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="null-7156"><a href="#null-7156"><span class="linenos">7156</span></a><span class="k">def</span> <span class="nf">null</span><span class="p">()</span> <span class="o">-&gt;</span> <span class="n">Null</span><span class="p">:</span>
+</span><span id="null-7157"><a href="#null-7157"><span class="linenos">7157</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
+</span><span id="null-7158"><a href="#null-7158"><span class="linenos">7158</span></a><span class="sd"> Returns a Null expression.</span>
+</span><span id="null-7159"><a href="#null-7159"><span class="linenos">7159</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="null-7160"><a href="#null-7160"><span class="linenos">7160</span></a> <span class="k">return</span> <span class="n">Null</span><span class="p">()</span>
</span></pre></div>