summaryrefslogtreecommitdiffstats
path: root/docs/sqlglot/dialects/duckdb.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/sqlglot/dialects/duckdb.html')
-rw-r--r--docs/sqlglot/dialects/duckdb.html1364
1 files changed, 692 insertions, 672 deletions
diff --git a/docs/sqlglot/dialects/duckdb.html b/docs/sqlglot/dialects/duckdb.html
index 2a9131e..3df9c71 100644
--- a/docs/sqlglot/dialects/duckdb.html
+++ b/docs/sqlglot/dialects/duckdb.html
@@ -142,6 +142,9 @@
<a class="variable" href="#DuckDB.Generator.SUPPORTS_CREATE_TABLE_LIKE">SUPPORTS_CREATE_TABLE_LIKE</a>
</li>
<li>
+ <a class="variable" href="#DuckDB.Generator.MULTI_ARG_DISTINCT">MULTI_ARG_DISTINCT</a>
+ </li>
+ <li>
<a class="variable" href="#DuckDB.Generator.TRANSFORMS">TRANSFORMS</a>
</li>
<li>
@@ -604,211 +607,212 @@
</span><span id="L-333"><a href="#L-333"><span class="linenos">333</span></a> <span class="n">IGNORE_NULLS_IN_FUNC</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-334"><a href="#L-334"><span class="linenos">334</span></a> <span class="n">JSON_PATH_BRACKETED_KEY_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-335"><a href="#L-335"><span class="linenos">335</span></a> <span class="n">SUPPORTS_CREATE_TABLE_LIKE</span> <span class="o">=</span> <span class="kc">False</span>
-</span><span id="L-336"><a href="#L-336"><span class="linenos">336</span></a>
-</span><span id="L-337"><a href="#L-337"><span class="linenos">337</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="L-338"><a href="#L-338"><span class="linenos">338</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span>
-</span><span id="L-339"><a href="#L-339"><span class="linenos">339</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">approx_count_distinct_sql</span><span class="p">,</span>
-</span><span id="L-340"><a href="#L-340"><span class="linenos">340</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="p">(</span>
-</span><span id="L-341"><a href="#L-341"><span class="linenos">341</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;ARRAY&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
-</span><span id="L-342"><a href="#L-342"><span class="linenos">342</span></a> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span> <span class="ow">and</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span>
-</span><span id="L-343"><a href="#L-343"><span class="linenos">343</span></a> <span class="k">else</span> <span class="n">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span>
-</span><span id="L-344"><a href="#L-344"><span class="linenos">344</span></a> <span class="p">),</span>
-</span><span id="L-345"><a href="#L-345"><span class="linenos">345</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySize</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ARRAY_LENGTH&quot;</span><span class="p">),</span>
-</span><span id="L-346"><a href="#L-346"><span class="linenos">346</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span><span class="p">:</span> <span class="n">arg_max_or_min_no_count</span><span class="p">(</span><span class="s2">&quot;ARG_MAX&quot;</span><span class="p">),</span>
-</span><span id="L-347"><a href="#L-347"><span class="linenos">347</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">:</span> <span class="n">arg_max_or_min_no_count</span><span class="p">(</span><span class="s2">&quot;ARG_MIN&quot;</span><span class="p">),</span>
-</span><span id="L-348"><a href="#L-348"><span class="linenos">348</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySort</span><span class="p">:</span> <span class="n">_array_sort_sql</span><span class="p">,</span>
-</span><span id="L-349"><a href="#L-349"><span class="linenos">349</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;LIST_SUM&quot;</span><span class="p">),</span>
-</span><span id="L-350"><a href="#L-350"><span class="linenos">350</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;XOR&quot;</span><span class="p">),</span>
-</span><span id="L-351"><a href="#L-351"><span class="linenos">351</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">:</span> <span class="n">no_comment_column_constraint_sql</span><span class="p">,</span>
-</span><span id="L-352"><a href="#L-352"><span class="linenos">352</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">&quot;CURRENT_DATE&quot;</span><span class="p">,</span>
-</span><span id="L-353"><a href="#L-353"><span class="linenos">353</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTime</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">&quot;CURRENT_TIME&quot;</span><span class="p">,</span>
-</span><span id="L-354"><a href="#L-354"><span class="linenos">354</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">&quot;CURRENT_TIMESTAMP&quot;</span><span class="p">,</span>
-</span><span id="L-355"><a href="#L-355"><span class="linenos">355</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfMonth</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAYOFMONTH&quot;</span><span class="p">),</span>
-</span><span id="L-356"><a href="#L-356"><span class="linenos">356</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAYOFWEEK&quot;</span><span class="p">),</span>
-</span><span id="L-357"><a href="#L-357"><span class="linenos">357</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAYOFYEAR&quot;</span><span class="p">),</span>
-</span><span id="L-358"><a href="#L-358"><span class="linenos">358</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</span><span class="p">,</span>
-</span><span id="L-359"><a href="#L-359"><span class="linenos">359</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Date</span><span class="p">:</span> <span class="n">_date_sql</span><span class="p">,</span>
-</span><span id="L-360"><a href="#L-360"><span class="linenos">360</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">,</span>
-</span><span id="L-361"><a href="#L-361"><span class="linenos">361</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_DATE&quot;</span><span class="p">),</span>
-</span><span id="L-362"><a href="#L-362"><span class="linenos">362</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">,</span>
-</span><span id="L-363"><a href="#L-363"><span class="linenos">363</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
-</span><span id="L-364"><a href="#L-364"><span class="linenos">364</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;&#39;</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;unit&#39;</span><span class="p">)</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">&#39;DAY&#39;</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span>
-</span><span id="L-365"><a href="#L-365"><span class="linenos">365</span></a> <span class="p">),</span>
-</span><span id="L-366"><a href="#L-366"><span class="linenos">366</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">:</span> <span class="n">datestrtodate_sql</span><span class="p">,</span>
-</span><span id="L-367"><a href="#L-367"><span class="linenos">367</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateToDi</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
-</span><span id="L-368"><a href="#L-368"><span class="linenos">368</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(STRFTIME(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">DATEINT_FORMAT</span><span class="si">}</span><span class="s2">) AS INT)&quot;</span><span class="p">,</span>
-</span><span id="L-369"><a href="#L-369"><span class="linenos">369</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Decode</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="n">encode_decode_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="s2">&quot;DECODE&quot;</span><span class="p">,</span> <span class="n">replace</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
-</span><span id="L-370"><a href="#L-370"><span class="linenos">370</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DiToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
-</span><span id="L-371"><a href="#L-371"><span class="linenos">371</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(STRPTIME(CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">DATEINT_FORMAT</span><span class="si">}</span><span class="s2">) AS DATE)&quot;</span><span class="p">,</span>
-</span><span id="L-372"><a href="#L-372"><span class="linenos">372</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Encode</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="n">encode_decode_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="s2">&quot;ENCODE&quot;</span><span class="p">,</span> <span class="n">replace</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
-</span><span id="L-373"><a href="#L-373"><span class="linenos">373</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;UNNEST&quot;</span><span class="p">),</span>
-</span><span id="L-374"><a href="#L-374"><span class="linenos">374</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;//&quot;</span><span class="p">),</span>
-</span><span id="L-375"><a href="#L-375"><span class="linenos">375</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsInf</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ISINF&quot;</span><span class="p">),</span>
-</span><span id="L-376"><a href="#L-376"><span class="linenos">376</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsNan</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ISNAN&quot;</span><span class="p">),</span>
-</span><span id="L-377"><a href="#L-377"><span class="linenos">377</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span>
-</span><span id="L-378"><a href="#L-378"><span class="linenos">378</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span>
-</span><span id="L-379"><a href="#L-379"><span class="linenos">379</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONFormat</span><span class="p">:</span> <span class="n">_json_format_sql</span><span class="p">,</span>
-</span><span id="L-380"><a href="#L-380"><span class="linenos">380</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalOr</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;BOOL_OR&quot;</span><span class="p">),</span>
-</span><span id="L-381"><a href="#L-381"><span class="linenos">381</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalAnd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;BOOL_AND&quot;</span><span class="p">),</span>
-</span><span id="L-382"><a href="#L-382"><span class="linenos">382</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MonthsBetween</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
-</span><span id="L-383"><a href="#L-383"><span class="linenos">383</span></a> <span class="s2">&quot;DATEDIFF&quot;</span><span class="p">,</span>
-</span><span id="L-384"><a href="#L-384"><span class="linenos">384</span></a> <span class="s2">&quot;&#39;month&#39;&quot;</span><span class="p">,</span>
-</span><span id="L-385"><a href="#L-385"><span class="linenos">385</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;timestamp&quot;</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
-</span><span id="L-386"><a href="#L-386"><span class="linenos">386</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">&quot;timestamp&quot;</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
-</span><span id="L-387"><a href="#L-387"><span class="linenos">387</span></a> <span class="p">),</span>
-</span><span id="L-388"><a href="#L-388"><span class="linenos">388</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;JSON&quot;</span><span class="p">),</span>
-</span><span id="L-389"><a href="#L-389"><span class="linenos">389</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileCont</span><span class="p">:</span> <span class="n">_rename_unless_within_group</span><span class="p">(</span><span class="s2">&quot;PERCENTILE_CONT&quot;</span><span class="p">,</span> <span class="s2">&quot;QUANTILE_CONT&quot;</span><span class="p">),</span>
-</span><span id="L-390"><a href="#L-390"><span class="linenos">390</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileDisc</span><span class="p">:</span> <span class="n">_rename_unless_within_group</span><span class="p">(</span><span class="s2">&quot;PERCENTILE_DISC&quot;</span><span class="p">,</span> <span class="s2">&quot;QUANTILE_DISC&quot;</span><span class="p">),</span>
-</span><span id="L-391"><a href="#L-391"><span class="linenos">391</span></a> <span class="c1"># DuckDB doesn&#39;t allow qualified columns inside of PIVOT expressions.</span>
-</span><span id="L-392"><a href="#L-392"><span class="linenos">392</span></a> <span class="c1"># See: https://github.com/duckdb/duckdb/blob/671faf92411182f81dce42ac43de8bfb05d9909e/src/planner/binder/tableref/bind_pivot.cpp#L61-L62</span>
-</span><span id="L-393"><a href="#L-393"><span class="linenos">393</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">unqualify_columns</span><span class="p">]),</span>
-</span><span id="L-394"><a href="#L-394"><span class="linenos">394</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpExtract</span><span class="p">:</span> <span class="n">regexp_extract_sql</span><span class="p">,</span>
-</span><span id="L-395"><a href="#L-395"><span class="linenos">395</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpReplace</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
-</span><span id="L-396"><a href="#L-396"><span class="linenos">396</span></a> <span class="s2">&quot;REGEXP_REPLACE&quot;</span><span class="p">,</span>
-</span><span id="L-397"><a href="#L-397"><span class="linenos">397</span></a> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
-</span><span id="L-398"><a href="#L-398"><span class="linenos">398</span></a> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span>
-</span><span id="L-399"><a href="#L-399"><span class="linenos">399</span></a> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;replacement&quot;</span><span class="p">),</span>
-</span><span id="L-400"><a href="#L-400"><span class="linenos">400</span></a> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;modifiers&quot;</span><span class="p">),</span>
-</span><span id="L-401"><a href="#L-401"><span class="linenos">401</span></a> <span class="p">),</span>
-</span><span id="L-402"><a href="#L-402"><span class="linenos">402</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;REGEXP_MATCHES&quot;</span><span class="p">),</span>
-</span><span id="L-403"><a href="#L-403"><span class="linenos">403</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;STR_SPLIT_REGEX&quot;</span><span class="p">),</span>
-</span><span id="L-404"><a href="#L-404"><span class="linenos">404</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;RANDOM&quot;</span><span class="p">),</span>
-</span><span id="L-405"><a href="#L-405"><span class="linenos">405</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SafeDivide</span><span class="p">:</span> <span class="n">no_safe_divide_sql</span><span class="p">,</span>
-</span><span id="L-406"><a href="#L-406"><span class="linenos">406</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;STR_SPLIT&quot;</span><span class="p">),</span>
-</span><span id="L-407"><a href="#L-407"><span class="linenos">407</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="p">:</span> <span class="n">_sort_array_sql</span><span class="p">,</span>
-</span><span id="L-408"><a href="#L-408"><span class="linenos">408</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span>
-</span><span id="L-409"><a href="#L-409"><span class="linenos">409</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(</span><span class="si">{</span><span class="n">str_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)&quot;</span><span class="p">,</span>
-</span><span id="L-410"><a href="#L-410"><span class="linenos">410</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">:</span> <span class="n">str_to_time_sql</span><span class="p">,</span>
-</span><span id="L-411"><a href="#L-411"><span class="linenos">411</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
-</span><span id="L-412"><a href="#L-412"><span class="linenos">412</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;EPOCH(STRPTIME(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">))&quot;</span><span class="p">,</span>
-</span><span id="L-413"><a href="#L-413"><span class="linenos">413</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">:</span> <span class="n">_struct_sql</span><span class="p">,</span>
-</span><span id="L-414"><a href="#L-414"><span class="linenos">414</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Timestamp</span><span class="p">:</span> <span class="n">no_timestamp_sql</span><span class="p">,</span>
-</span><span id="L-415"><a href="#L-415"><span class="linenos">415</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampDiff</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
-</span><span id="L-416"><a href="#L-416"><span class="linenos">416</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">unit</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span>
-</span><span id="L-417"><a href="#L-417"><span class="linenos">417</span></a> <span class="p">),</span>
-</span><span id="L-418"><a href="#L-418"><span class="linenos">418</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> <span class="n">timestamptrunc_sql</span><span class="p">,</span>
-</span><span id="L-419"><a href="#L-419"><span class="linenos">419</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)&quot;</span><span class="p">,</span>
-</span><span id="L-420"><a href="#L-420"><span class="linenos">420</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">:</span> <span class="n">timestrtotime_sql</span><span class="p">,</span>
-</span><span id="L-421"><a href="#L-421"><span class="linenos">421</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToUnix</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;EPOCH(CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TIMESTAMP))&quot;</span><span class="p">,</span>
-</span><span id="L-422"><a href="#L-422"><span class="linenos">422</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
-</span><span id="L-423"><a href="#L-423"><span class="linenos">423</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;STRFTIME(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">,</span>
-</span><span id="L-424"><a href="#L-424"><span class="linenos">424</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;EPOCH&quot;</span><span class="p">),</span>
-</span><span id="L-425"><a href="#L-425"><span class="linenos">425</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDiToDi</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
-</span><span id="L-426"><a href="#L-426"><span class="linenos">426</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(SUBSTR(REPLACE(CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), &#39;-&#39;, &#39;&#39;), 1, 8) AS INT)&quot;</span><span class="p">,</span>
-</span><span id="L-427"><a href="#L-427"><span class="linenos">427</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">:</span> <span class="n">_ts_or_ds_add_sql</span><span class="p">,</span>
-</span><span id="L-428"><a href="#L-428"><span class="linenos">428</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsDiff</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
-</span><span id="L-429"><a href="#L-429"><span class="linenos">429</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span>
-</span><span id="L-430"><a href="#L-430"><span class="linenos">430</span></a> <span class="sa">f</span><span class="s2">&quot;&#39;</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;unit&#39;</span><span class="p">)</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">&#39;DAY&#39;</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">,</span>
-</span><span id="L-431"><a href="#L-431"><span class="linenos">431</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;TIMESTAMP&quot;</span><span class="p">),</span>
-</span><span id="L-432"><a href="#L-432"><span class="linenos">432</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">&quot;TIMESTAMP&quot;</span><span class="p">),</span>
-</span><span id="L-433"><a href="#L-433"><span class="linenos">433</span></a> <span class="p">),</span>
-</span><span id="L-434"><a href="#L-434"><span class="linenos">434</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
-</span><span id="L-435"><a href="#L-435"><span class="linenos">435</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;STRFTIME(TO_TIMESTAMP(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">), </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">,</span>
-</span><span id="L-436"><a href="#L-436"><span class="linenos">436</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">_unix_to_time_sql</span><span class="p">,</span>
-</span><span id="L-437"><a href="#L-437"><span class="linenos">437</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTimeStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(TO_TIMESTAMP(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">) AS TEXT)&quot;</span><span class="p">,</span>
-</span><span id="L-438"><a href="#L-438"><span class="linenos">438</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VariancePop</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;VAR_POP&quot;</span><span class="p">),</span>
-</span><span id="L-439"><a href="#L-439"><span class="linenos">439</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WeekOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;WEEKOFYEAR&quot;</span><span class="p">),</span>
-</span><span id="L-440"><a href="#L-440"><span class="linenos">440</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">:</span> <span class="n">bool_xor_sql</span><span class="p">,</span>
-</span><span id="L-441"><a href="#L-441"><span class="linenos">441</span></a> <span class="p">}</span>
-</span><span id="L-442"><a href="#L-442"><span class="linenos">442</span></a>
-</span><span id="L-443"><a href="#L-443"><span class="linenos">443</span></a> <span class="n">SUPPORTED_JSON_PATH_PARTS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="L-444"><a href="#L-444"><span class="linenos">444</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">,</span>
-</span><span id="L-445"><a href="#L-445"><span class="linenos">445</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">,</span>
-</span><span id="L-446"><a href="#L-446"><span class="linenos">446</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">,</span>
-</span><span id="L-447"><a href="#L-447"><span class="linenos">447</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">,</span>
-</span><span id="L-448"><a href="#L-448"><span class="linenos">448</span></a> <span class="p">}</span>
-</span><span id="L-449"><a href="#L-449"><span class="linenos">449</span></a>
-</span><span id="L-450"><a href="#L-450"><span class="linenos">450</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="L-451"><a href="#L-451"><span class="linenos">451</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="p">,</span>
-</span><span id="L-452"><a href="#L-452"><span class="linenos">452</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BINARY</span><span class="p">:</span> <span class="s2">&quot;BLOB&quot;</span><span class="p">,</span>
-</span><span id="L-453"><a href="#L-453"><span class="linenos">453</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
-</span><span id="L-454"><a href="#L-454"><span class="linenos">454</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">:</span> <span class="s2">&quot;REAL&quot;</span><span class="p">,</span>
-</span><span id="L-455"><a href="#L-455"><span class="linenos">455</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
-</span><span id="L-456"><a href="#L-456"><span class="linenos">456</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
-</span><span id="L-457"><a href="#L-457"><span class="linenos">457</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UINT</span><span class="p">:</span> <span class="s2">&quot;UINTEGER&quot;</span><span class="p">,</span>
-</span><span id="L-458"><a href="#L-458"><span class="linenos">458</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">:</span> <span class="s2">&quot;BLOB&quot;</span><span class="p">,</span>
-</span><span id="L-459"><a href="#L-459"><span class="linenos">459</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
-</span><span id="L-460"><a href="#L-460"><span class="linenos">460</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_S</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP_S&quot;</span><span class="p">,</span>
-</span><span id="L-461"><a href="#L-461"><span class="linenos">461</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_MS</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP_MS&quot;</span><span class="p">,</span>
-</span><span id="L-462"><a href="#L-462"><span class="linenos">462</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_NS</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP_NS&quot;</span><span class="p">,</span>
-</span><span id="L-463"><a href="#L-463"><span class="linenos">463</span></a> <span class="p">}</span>
-</span><span id="L-464"><a href="#L-464"><span class="linenos">464</span></a>
-</span><span id="L-465"><a href="#L-465"><span class="linenos">465</span></a> <span class="n">STAR_MAPPING</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">STAR_MAPPING</span><span class="p">,</span> <span class="s2">&quot;except&quot;</span><span class="p">:</span> <span class="s2">&quot;EXCLUDE&quot;</span><span class="p">}</span>
-</span><span id="L-466"><a href="#L-466"><span class="linenos">466</span></a>
-</span><span id="L-467"><a href="#L-467"><span class="linenos">467</span></a> <span class="n">UNWRAPPED_INTERVAL_VALUES</span> <span class="o">=</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span>
-</span><span id="L-468"><a href="#L-468"><span class="linenos">468</span></a>
-</span><span id="L-469"><a href="#L-469"><span class="linenos">469</span></a> <span class="c1"># DuckDB doesn&#39;t generally support CREATE TABLE .. properties</span>
-</span><span id="L-470"><a href="#L-470"><span class="linenos">470</span></a> <span class="c1"># https://duckdb.org/docs/sql/statements/create_table.html</span>
-</span><span id="L-471"><a href="#L-471"><span class="linenos">471</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="L-472"><a href="#L-472"><span class="linenos">472</span></a> <span class="n">prop</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span>
-</span><span id="L-473"><a href="#L-473"><span class="linenos">473</span></a> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span>
-</span><span id="L-474"><a href="#L-474"><span class="linenos">474</span></a> <span class="p">}</span>
-</span><span id="L-475"><a href="#L-475"><span class="linenos">475</span></a>
-</span><span id="L-476"><a href="#L-476"><span class="linenos">476</span></a> <span class="c1"># There are a few exceptions (e.g. temporary tables) which are supported or</span>
-</span><span id="L-477"><a href="#L-477"><span class="linenos">477</span></a> <span class="c1"># can be transpiled to DuckDB, so we explicitly override them accordingly</span>
-</span><span id="L-478"><a href="#L-478"><span class="linenos">478</span></a> <span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span>
-</span><span id="L-479"><a href="#L-479"><span class="linenos">479</span></a> <span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</span><span class="p">]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span>
-</span><span id="L-480"><a href="#L-480"><span class="linenos">480</span></a>
-</span><span id="L-481"><a href="#L-481"><span class="linenos">481</span></a> <span class="k">def</span> <span class="nf">timefromparts_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="L-482"><a href="#L-482"><span class="linenos">482</span></a> <span class="n">nano</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nano&quot;</span><span class="p">)</span>
-</span><span id="L-483"><a href="#L-483"><span class="linenos">483</span></a> <span class="k">if</span> <span class="n">nano</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
-</span><span id="L-484"><a href="#L-484"><span class="linenos">484</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span>
-</span><span id="L-485"><a href="#L-485"><span class="linenos">485</span></a> <span class="s2">&quot;sec&quot;</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;sec&quot;</span><span class="p">]</span> <span class="o">+</span> <span class="n">nano</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000000000.0</span><span class="p">)</span>
-</span><span id="L-486"><a href="#L-486"><span class="linenos">486</span></a> <span class="p">)</span>
-</span><span id="L-487"><a href="#L-487"><span class="linenos">487</span></a>
-</span><span id="L-488"><a href="#L-488"><span class="linenos">488</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_TIME&quot;</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
-</span><span id="L-489"><a href="#L-489"><span class="linenos">489</span></a>
-</span><span id="L-490"><a href="#L-490"><span class="linenos">490</span></a> <span class="k">def</span> <span class="nf">timestampfromparts_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="L-491"><a href="#L-491"><span class="linenos">491</span></a> <span class="n">sec</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;sec&quot;</span><span class="p">]</span>
-</span><span id="L-492"><a href="#L-492"><span class="linenos">492</span></a>
-</span><span id="L-493"><a href="#L-493"><span class="linenos">493</span></a> <span class="n">milli</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;milli&quot;</span><span class="p">)</span>
-</span><span id="L-494"><a href="#L-494"><span class="linenos">494</span></a> <span class="k">if</span> <span class="n">milli</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
-</span><span id="L-495"><a href="#L-495"><span class="linenos">495</span></a> <span class="n">sec</span> <span class="o">+=</span> <span class="n">milli</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000.0</span><span class="p">)</span>
-</span><span id="L-496"><a href="#L-496"><span class="linenos">496</span></a>
-</span><span id="L-497"><a href="#L-497"><span class="linenos">497</span></a> <span class="n">nano</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nano&quot;</span><span class="p">)</span>
-</span><span id="L-498"><a href="#L-498"><span class="linenos">498</span></a> <span class="k">if</span> <span class="n">nano</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
-</span><span id="L-499"><a href="#L-499"><span class="linenos">499</span></a> <span class="n">sec</span> <span class="o">+=</span> <span class="n">nano</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000000000.0</span><span class="p">)</span>
-</span><span id="L-500"><a href="#L-500"><span class="linenos">500</span></a>
-</span><span id="L-501"><a href="#L-501"><span class="linenos">501</span></a> <span class="k">if</span> <span class="n">milli</span> <span class="ow">or</span> <span class="n">nano</span><span class="p">:</span>
-</span><span id="L-502"><a href="#L-502"><span class="linenos">502</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;sec&quot;</span><span class="p">,</span> <span class="n">sec</span><span class="p">)</span>
-</span><span id="L-503"><a href="#L-503"><span class="linenos">503</span></a>
-</span><span id="L-504"><a href="#L-504"><span class="linenos">504</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_TIMESTAMP&quot;</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
-</span><span id="L-505"><a href="#L-505"><span class="linenos">505</span></a>
-</span><span id="L-506"><a href="#L-506"><span class="linenos">506</span></a> <span class="k">def</span> <span class="nf">tablesample_sql</span><span class="p">(</span>
-</span><span id="L-507"><a href="#L-507"><span class="linenos">507</span></a> <span class="bp">self</span><span class="p">,</span>
-</span><span id="L-508"><a href="#L-508"><span class="linenos">508</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">,</span>
-</span><span id="L-509"><a href="#L-509"><span class="linenos">509</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot; AS &quot;</span><span class="p">,</span>
-</span><span id="L-510"><a href="#L-510"><span class="linenos">510</span></a> <span class="n">tablesample_keyword</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="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
-</span><span id="L-511"><a href="#L-511"><span class="linenos">511</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="L-512"><a href="#L-512"><span class="linenos">512</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span>
-</span><span id="L-513"><a href="#L-513"><span class="linenos">513</span></a> <span class="c1"># This sample clause only applies to a single source, not the entire resulting relation</span>
-</span><span id="L-514"><a href="#L-514"><span class="linenos">514</span></a> <span class="n">tablesample_keyword</span> <span class="o">=</span> <span class="s2">&quot;TABLESAMPLE&quot;</span>
-</span><span id="L-515"><a href="#L-515"><span class="linenos">515</span></a>
-</span><span id="L-516"><a href="#L-516"><span class="linenos">516</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">tablesample_sql</span><span class="p">(</span>
-</span><span id="L-517"><a href="#L-517"><span class="linenos">517</span></a> <span class="n">expression</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span> <span class="n">tablesample_keyword</span><span class="o">=</span><span class="n">tablesample_keyword</span>
-</span><span id="L-518"><a href="#L-518"><span class="linenos">518</span></a> <span class="p">)</span>
-</span><span id="L-519"><a href="#L-519"><span class="linenos">519</span></a>
-</span><span id="L-520"><a href="#L-520"><span class="linenos">520</span></a> <span class="k">def</span> <span class="nf">interval_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="L-521"><a href="#L-521"><span class="linenos">521</span></a> <span class="n">multiplier</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="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
-</span><span id="L-522"><a href="#L-522"><span class="linenos">522</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">&quot;unit&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
-</span><span id="L-523"><a href="#L-523"><span class="linenos">523</span></a>
-</span><span id="L-524"><a href="#L-524"><span class="linenos">524</span></a> <span class="k">if</span> <span class="n">unit</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;week&quot;</span><span class="p">):</span>
-</span><span id="L-525"><a href="#L-525"><span class="linenos">525</span></a> <span class="n">multiplier</span> <span class="o">=</span> <span class="mi">7</span>
-</span><span id="L-526"><a href="#L-526"><span class="linenos">526</span></a> <span class="k">if</span> <span class="n">unit</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;quarter&quot;</span><span class="p">):</span>
-</span><span id="L-527"><a href="#L-527"><span class="linenos">527</span></a> <span class="n">multiplier</span> <span class="o">=</span> <span class="mi">90</span>
-</span><span id="L-528"><a href="#L-528"><span class="linenos">528</span></a>
-</span><span id="L-529"><a href="#L-529"><span class="linenos">529</span></a> <span class="k">if</span> <span class="n">multiplier</span><span class="p">:</span>
-</span><span id="L-530"><a href="#L-530"><span class="linenos">530</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;(</span><span class="si">{</span><span class="n">multiplier</span><span class="si">}</span><span class="s2"> * </span><span class="si">{</span><span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s1">&#39;DAY&#39;</span><span class="p">)))</span><span class="si">}</span><span class="s2">)&quot;</span>
-</span><span id="L-531"><a href="#L-531"><span class="linenos">531</span></a>
-</span><span id="L-532"><a href="#L-532"><span class="linenos">532</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
-</span><span id="L-533"><a href="#L-533"><span class="linenos">533</span></a>
-</span><span id="L-534"><a href="#L-534"><span class="linenos">534</span></a> <span class="k">def</span> <span class="nf">columndef_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot; &quot;</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="L-535"><a href="#L-535"><span class="linenos">535</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UserDefinedFunction</span><span class="p">):</span>
-</span><span id="L-536"><a href="#L-536"><span class="linenos">536</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
-</span><span id="L-537"><a href="#L-537"><span class="linenos">537</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">columndef_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sep</span><span class="p">)</span>
-</span><span id="L-538"><a href="#L-538"><span class="linenos">538</span></a>
-</span><span id="L-539"><a href="#L-539"><span class="linenos">539</span></a> <span class="k">def</span> <span class="nf">placeholder_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="L-540"><a href="#L-540"><span class="linenos">540</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;$</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">&quot;?&quot;</span>
+</span><span id="L-336"><a href="#L-336"><span class="linenos">336</span></a> <span class="n">MULTI_ARG_DISTINCT</span> <span class="o">=</span> <span class="kc">False</span>
+</span><span id="L-337"><a href="#L-337"><span class="linenos">337</span></a>
+</span><span id="L-338"><a href="#L-338"><span class="linenos">338</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="L-339"><a href="#L-339"><span class="linenos">339</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span>
+</span><span id="L-340"><a href="#L-340"><span class="linenos">340</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">approx_count_distinct_sql</span><span class="p">,</span>
+</span><span id="L-341"><a href="#L-341"><span class="linenos">341</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="p">(</span>
+</span><span id="L-342"><a href="#L-342"><span class="linenos">342</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;ARRAY&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+</span><span id="L-343"><a href="#L-343"><span class="linenos">343</span></a> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span> <span class="ow">and</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span>
+</span><span id="L-344"><a href="#L-344"><span class="linenos">344</span></a> <span class="k">else</span> <span class="n">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span>
+</span><span id="L-345"><a href="#L-345"><span class="linenos">345</span></a> <span class="p">),</span>
+</span><span id="L-346"><a href="#L-346"><span class="linenos">346</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySize</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ARRAY_LENGTH&quot;</span><span class="p">),</span>
+</span><span id="L-347"><a href="#L-347"><span class="linenos">347</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span><span class="p">:</span> <span class="n">arg_max_or_min_no_count</span><span class="p">(</span><span class="s2">&quot;ARG_MAX&quot;</span><span class="p">),</span>
+</span><span id="L-348"><a href="#L-348"><span class="linenos">348</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">:</span> <span class="n">arg_max_or_min_no_count</span><span class="p">(</span><span class="s2">&quot;ARG_MIN&quot;</span><span class="p">),</span>
+</span><span id="L-349"><a href="#L-349"><span class="linenos">349</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySort</span><span class="p">:</span> <span class="n">_array_sort_sql</span><span class="p">,</span>
+</span><span id="L-350"><a href="#L-350"><span class="linenos">350</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;LIST_SUM&quot;</span><span class="p">),</span>
+</span><span id="L-351"><a href="#L-351"><span class="linenos">351</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;XOR&quot;</span><span class="p">),</span>
+</span><span id="L-352"><a href="#L-352"><span class="linenos">352</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">:</span> <span class="n">no_comment_column_constraint_sql</span><span class="p">,</span>
+</span><span id="L-353"><a href="#L-353"><span class="linenos">353</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">&quot;CURRENT_DATE&quot;</span><span class="p">,</span>
+</span><span id="L-354"><a href="#L-354"><span class="linenos">354</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTime</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">&quot;CURRENT_TIME&quot;</span><span class="p">,</span>
+</span><span id="L-355"><a href="#L-355"><span class="linenos">355</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">&quot;CURRENT_TIMESTAMP&quot;</span><span class="p">,</span>
+</span><span id="L-356"><a href="#L-356"><span class="linenos">356</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfMonth</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAYOFMONTH&quot;</span><span class="p">),</span>
+</span><span id="L-357"><a href="#L-357"><span class="linenos">357</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAYOFWEEK&quot;</span><span class="p">),</span>
+</span><span id="L-358"><a href="#L-358"><span class="linenos">358</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAYOFYEAR&quot;</span><span class="p">),</span>
+</span><span id="L-359"><a href="#L-359"><span class="linenos">359</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</span><span class="p">,</span>
+</span><span id="L-360"><a href="#L-360"><span class="linenos">360</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Date</span><span class="p">:</span> <span class="n">_date_sql</span><span class="p">,</span>
+</span><span id="L-361"><a href="#L-361"><span class="linenos">361</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">,</span>
+</span><span id="L-362"><a href="#L-362"><span class="linenos">362</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_DATE&quot;</span><span class="p">),</span>
+</span><span id="L-363"><a href="#L-363"><span class="linenos">363</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">,</span>
+</span><span id="L-364"><a href="#L-364"><span class="linenos">364</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
+</span><span id="L-365"><a href="#L-365"><span class="linenos">365</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;&#39;</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;unit&#39;</span><span class="p">)</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">&#39;DAY&#39;</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span>
+</span><span id="L-366"><a href="#L-366"><span class="linenos">366</span></a> <span class="p">),</span>
+</span><span id="L-367"><a href="#L-367"><span class="linenos">367</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">:</span> <span class="n">datestrtodate_sql</span><span class="p">,</span>
+</span><span id="L-368"><a href="#L-368"><span class="linenos">368</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateToDi</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
+</span><span id="L-369"><a href="#L-369"><span class="linenos">369</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(STRFTIME(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">DATEINT_FORMAT</span><span class="si">}</span><span class="s2">) AS INT)&quot;</span><span class="p">,</span>
+</span><span id="L-370"><a href="#L-370"><span class="linenos">370</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Decode</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="n">encode_decode_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="s2">&quot;DECODE&quot;</span><span class="p">,</span> <span class="n">replace</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
+</span><span id="L-371"><a href="#L-371"><span class="linenos">371</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DiToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
+</span><span id="L-372"><a href="#L-372"><span class="linenos">372</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(STRPTIME(CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">DATEINT_FORMAT</span><span class="si">}</span><span class="s2">) AS DATE)&quot;</span><span class="p">,</span>
+</span><span id="L-373"><a href="#L-373"><span class="linenos">373</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Encode</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="n">encode_decode_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="s2">&quot;ENCODE&quot;</span><span class="p">,</span> <span class="n">replace</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
+</span><span id="L-374"><a href="#L-374"><span class="linenos">374</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;UNNEST&quot;</span><span class="p">),</span>
+</span><span id="L-375"><a href="#L-375"><span class="linenos">375</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;//&quot;</span><span class="p">),</span>
+</span><span id="L-376"><a href="#L-376"><span class="linenos">376</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsInf</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ISINF&quot;</span><span class="p">),</span>
+</span><span id="L-377"><a href="#L-377"><span class="linenos">377</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsNan</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ISNAN&quot;</span><span class="p">),</span>
+</span><span id="L-378"><a href="#L-378"><span class="linenos">378</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span>
+</span><span id="L-379"><a href="#L-379"><span class="linenos">379</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span>
+</span><span id="L-380"><a href="#L-380"><span class="linenos">380</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONFormat</span><span class="p">:</span> <span class="n">_json_format_sql</span><span class="p">,</span>
+</span><span id="L-381"><a href="#L-381"><span class="linenos">381</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalOr</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;BOOL_OR&quot;</span><span class="p">),</span>
+</span><span id="L-382"><a href="#L-382"><span class="linenos">382</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalAnd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;BOOL_AND&quot;</span><span class="p">),</span>
+</span><span id="L-383"><a href="#L-383"><span class="linenos">383</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MonthsBetween</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
+</span><span id="L-384"><a href="#L-384"><span class="linenos">384</span></a> <span class="s2">&quot;DATEDIFF&quot;</span><span class="p">,</span>
+</span><span id="L-385"><a href="#L-385"><span class="linenos">385</span></a> <span class="s2">&quot;&#39;month&#39;&quot;</span><span class="p">,</span>
+</span><span id="L-386"><a href="#L-386"><span class="linenos">386</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;timestamp&quot;</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
+</span><span id="L-387"><a href="#L-387"><span class="linenos">387</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">&quot;timestamp&quot;</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
+</span><span id="L-388"><a href="#L-388"><span class="linenos">388</span></a> <span class="p">),</span>
+</span><span id="L-389"><a href="#L-389"><span class="linenos">389</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;JSON&quot;</span><span class="p">),</span>
+</span><span id="L-390"><a href="#L-390"><span class="linenos">390</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileCont</span><span class="p">:</span> <span class="n">_rename_unless_within_group</span><span class="p">(</span><span class="s2">&quot;PERCENTILE_CONT&quot;</span><span class="p">,</span> <span class="s2">&quot;QUANTILE_CONT&quot;</span><span class="p">),</span>
+</span><span id="L-391"><a href="#L-391"><span class="linenos">391</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileDisc</span><span class="p">:</span> <span class="n">_rename_unless_within_group</span><span class="p">(</span><span class="s2">&quot;PERCENTILE_DISC&quot;</span><span class="p">,</span> <span class="s2">&quot;QUANTILE_DISC&quot;</span><span class="p">),</span>
+</span><span id="L-392"><a href="#L-392"><span class="linenos">392</span></a> <span class="c1"># DuckDB doesn&#39;t allow qualified columns inside of PIVOT expressions.</span>
+</span><span id="L-393"><a href="#L-393"><span class="linenos">393</span></a> <span class="c1"># See: https://github.com/duckdb/duckdb/blob/671faf92411182f81dce42ac43de8bfb05d9909e/src/planner/binder/tableref/bind_pivot.cpp#L61-L62</span>
+</span><span id="L-394"><a href="#L-394"><span class="linenos">394</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">unqualify_columns</span><span class="p">]),</span>
+</span><span id="L-395"><a href="#L-395"><span class="linenos">395</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpExtract</span><span class="p">:</span> <span class="n">regexp_extract_sql</span><span class="p">,</span>
+</span><span id="L-396"><a href="#L-396"><span class="linenos">396</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpReplace</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
+</span><span id="L-397"><a href="#L-397"><span class="linenos">397</span></a> <span class="s2">&quot;REGEXP_REPLACE&quot;</span><span class="p">,</span>
+</span><span id="L-398"><a href="#L-398"><span class="linenos">398</span></a> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
+</span><span id="L-399"><a href="#L-399"><span class="linenos">399</span></a> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span>
+</span><span id="L-400"><a href="#L-400"><span class="linenos">400</span></a> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;replacement&quot;</span><span class="p">),</span>
+</span><span id="L-401"><a href="#L-401"><span class="linenos">401</span></a> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;modifiers&quot;</span><span class="p">),</span>
+</span><span id="L-402"><a href="#L-402"><span class="linenos">402</span></a> <span class="p">),</span>
+</span><span id="L-403"><a href="#L-403"><span class="linenos">403</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;REGEXP_MATCHES&quot;</span><span class="p">),</span>
+</span><span id="L-404"><a href="#L-404"><span class="linenos">404</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;STR_SPLIT_REGEX&quot;</span><span class="p">),</span>
+</span><span id="L-405"><a href="#L-405"><span class="linenos">405</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;RANDOM&quot;</span><span class="p">),</span>
+</span><span id="L-406"><a href="#L-406"><span class="linenos">406</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SafeDivide</span><span class="p">:</span> <span class="n">no_safe_divide_sql</span><span class="p">,</span>
+</span><span id="L-407"><a href="#L-407"><span class="linenos">407</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;STR_SPLIT&quot;</span><span class="p">),</span>
+</span><span id="L-408"><a href="#L-408"><span class="linenos">408</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="p">:</span> <span class="n">_sort_array_sql</span><span class="p">,</span>
+</span><span id="L-409"><a href="#L-409"><span class="linenos">409</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span>
+</span><span id="L-410"><a href="#L-410"><span class="linenos">410</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(</span><span class="si">{</span><span class="n">str_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)&quot;</span><span class="p">,</span>
+</span><span id="L-411"><a href="#L-411"><span class="linenos">411</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">:</span> <span class="n">str_to_time_sql</span><span class="p">,</span>
+</span><span id="L-412"><a href="#L-412"><span class="linenos">412</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
+</span><span id="L-413"><a href="#L-413"><span class="linenos">413</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;EPOCH(STRPTIME(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">))&quot;</span><span class="p">,</span>
+</span><span id="L-414"><a href="#L-414"><span class="linenos">414</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">:</span> <span class="n">_struct_sql</span><span class="p">,</span>
+</span><span id="L-415"><a href="#L-415"><span class="linenos">415</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Timestamp</span><span class="p">:</span> <span class="n">no_timestamp_sql</span><span class="p">,</span>
+</span><span id="L-416"><a href="#L-416"><span class="linenos">416</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampDiff</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
+</span><span id="L-417"><a href="#L-417"><span class="linenos">417</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">unit</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span>
+</span><span id="L-418"><a href="#L-418"><span class="linenos">418</span></a> <span class="p">),</span>
+</span><span id="L-419"><a href="#L-419"><span class="linenos">419</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> <span class="n">timestamptrunc_sql</span><span class="p">,</span>
+</span><span id="L-420"><a href="#L-420"><span class="linenos">420</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)&quot;</span><span class="p">,</span>
+</span><span id="L-421"><a href="#L-421"><span class="linenos">421</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">:</span> <span class="n">timestrtotime_sql</span><span class="p">,</span>
+</span><span id="L-422"><a href="#L-422"><span class="linenos">422</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToUnix</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;EPOCH(CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TIMESTAMP))&quot;</span><span class="p">,</span>
+</span><span id="L-423"><a href="#L-423"><span class="linenos">423</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
+</span><span id="L-424"><a href="#L-424"><span class="linenos">424</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;STRFTIME(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">,</span>
+</span><span id="L-425"><a href="#L-425"><span class="linenos">425</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;EPOCH&quot;</span><span class="p">),</span>
+</span><span id="L-426"><a href="#L-426"><span class="linenos">426</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDiToDi</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
+</span><span id="L-427"><a href="#L-427"><span class="linenos">427</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(SUBSTR(REPLACE(CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), &#39;-&#39;, &#39;&#39;), 1, 8) AS INT)&quot;</span><span class="p">,</span>
+</span><span id="L-428"><a href="#L-428"><span class="linenos">428</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">:</span> <span class="n">_ts_or_ds_add_sql</span><span class="p">,</span>
+</span><span id="L-429"><a href="#L-429"><span class="linenos">429</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsDiff</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
+</span><span id="L-430"><a href="#L-430"><span class="linenos">430</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span>
+</span><span id="L-431"><a href="#L-431"><span class="linenos">431</span></a> <span class="sa">f</span><span class="s2">&quot;&#39;</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;unit&#39;</span><span class="p">)</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">&#39;DAY&#39;</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">,</span>
+</span><span id="L-432"><a href="#L-432"><span class="linenos">432</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;TIMESTAMP&quot;</span><span class="p">),</span>
+</span><span id="L-433"><a href="#L-433"><span class="linenos">433</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">&quot;TIMESTAMP&quot;</span><span class="p">),</span>
+</span><span id="L-434"><a href="#L-434"><span class="linenos">434</span></a> <span class="p">),</span>
+</span><span id="L-435"><a href="#L-435"><span class="linenos">435</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
+</span><span id="L-436"><a href="#L-436"><span class="linenos">436</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;STRFTIME(TO_TIMESTAMP(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">), </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">,</span>
+</span><span id="L-437"><a href="#L-437"><span class="linenos">437</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">_unix_to_time_sql</span><span class="p">,</span>
+</span><span id="L-438"><a href="#L-438"><span class="linenos">438</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTimeStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(TO_TIMESTAMP(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">) AS TEXT)&quot;</span><span class="p">,</span>
+</span><span id="L-439"><a href="#L-439"><span class="linenos">439</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VariancePop</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;VAR_POP&quot;</span><span class="p">),</span>
+</span><span id="L-440"><a href="#L-440"><span class="linenos">440</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WeekOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;WEEKOFYEAR&quot;</span><span class="p">),</span>
+</span><span id="L-441"><a href="#L-441"><span class="linenos">441</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">:</span> <span class="n">bool_xor_sql</span><span class="p">,</span>
+</span><span id="L-442"><a href="#L-442"><span class="linenos">442</span></a> <span class="p">}</span>
+</span><span id="L-443"><a href="#L-443"><span class="linenos">443</span></a>
+</span><span id="L-444"><a href="#L-444"><span class="linenos">444</span></a> <span class="n">SUPPORTED_JSON_PATH_PARTS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="L-445"><a href="#L-445"><span class="linenos">445</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">,</span>
+</span><span id="L-446"><a href="#L-446"><span class="linenos">446</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">,</span>
+</span><span id="L-447"><a href="#L-447"><span class="linenos">447</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">,</span>
+</span><span id="L-448"><a href="#L-448"><span class="linenos">448</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">,</span>
+</span><span id="L-449"><a href="#L-449"><span class="linenos">449</span></a> <span class="p">}</span>
+</span><span id="L-450"><a href="#L-450"><span class="linenos">450</span></a>
+</span><span id="L-451"><a href="#L-451"><span class="linenos">451</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="L-452"><a href="#L-452"><span class="linenos">452</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="p">,</span>
+</span><span id="L-453"><a href="#L-453"><span class="linenos">453</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BINARY</span><span class="p">:</span> <span class="s2">&quot;BLOB&quot;</span><span class="p">,</span>
+</span><span id="L-454"><a href="#L-454"><span class="linenos">454</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
+</span><span id="L-455"><a href="#L-455"><span class="linenos">455</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">:</span> <span class="s2">&quot;REAL&quot;</span><span class="p">,</span>
+</span><span id="L-456"><a href="#L-456"><span class="linenos">456</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
+</span><span id="L-457"><a href="#L-457"><span class="linenos">457</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
+</span><span id="L-458"><a href="#L-458"><span class="linenos">458</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UINT</span><span class="p">:</span> <span class="s2">&quot;UINTEGER&quot;</span><span class="p">,</span>
+</span><span id="L-459"><a href="#L-459"><span class="linenos">459</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">:</span> <span class="s2">&quot;BLOB&quot;</span><span class="p">,</span>
+</span><span id="L-460"><a href="#L-460"><span class="linenos">460</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
+</span><span id="L-461"><a href="#L-461"><span class="linenos">461</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_S</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP_S&quot;</span><span class="p">,</span>
+</span><span id="L-462"><a href="#L-462"><span class="linenos">462</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_MS</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP_MS&quot;</span><span class="p">,</span>
+</span><span id="L-463"><a href="#L-463"><span class="linenos">463</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_NS</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP_NS&quot;</span><span class="p">,</span>
+</span><span id="L-464"><a href="#L-464"><span class="linenos">464</span></a> <span class="p">}</span>
+</span><span id="L-465"><a href="#L-465"><span class="linenos">465</span></a>
+</span><span id="L-466"><a href="#L-466"><span class="linenos">466</span></a> <span class="n">STAR_MAPPING</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">STAR_MAPPING</span><span class="p">,</span> <span class="s2">&quot;except&quot;</span><span class="p">:</span> <span class="s2">&quot;EXCLUDE&quot;</span><span class="p">}</span>
+</span><span id="L-467"><a href="#L-467"><span class="linenos">467</span></a>
+</span><span id="L-468"><a href="#L-468"><span class="linenos">468</span></a> <span class="n">UNWRAPPED_INTERVAL_VALUES</span> <span class="o">=</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span>
+</span><span id="L-469"><a href="#L-469"><span class="linenos">469</span></a>
+</span><span id="L-470"><a href="#L-470"><span class="linenos">470</span></a> <span class="c1"># DuckDB doesn&#39;t generally support CREATE TABLE .. properties</span>
+</span><span id="L-471"><a href="#L-471"><span class="linenos">471</span></a> <span class="c1"># https://duckdb.org/docs/sql/statements/create_table.html</span>
+</span><span id="L-472"><a href="#L-472"><span class="linenos">472</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="L-473"><a href="#L-473"><span class="linenos">473</span></a> <span class="n">prop</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span>
+</span><span id="L-474"><a href="#L-474"><span class="linenos">474</span></a> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span>
+</span><span id="L-475"><a href="#L-475"><span class="linenos">475</span></a> <span class="p">}</span>
+</span><span id="L-476"><a href="#L-476"><span class="linenos">476</span></a>
+</span><span id="L-477"><a href="#L-477"><span class="linenos">477</span></a> <span class="c1"># There are a few exceptions (e.g. temporary tables) which are supported or</span>
+</span><span id="L-478"><a href="#L-478"><span class="linenos">478</span></a> <span class="c1"># can be transpiled to DuckDB, so we explicitly override them accordingly</span>
+</span><span id="L-479"><a href="#L-479"><span class="linenos">479</span></a> <span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span>
+</span><span id="L-480"><a href="#L-480"><span class="linenos">480</span></a> <span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</span><span class="p">]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span>
+</span><span id="L-481"><a href="#L-481"><span class="linenos">481</span></a>
+</span><span id="L-482"><a href="#L-482"><span class="linenos">482</span></a> <span class="k">def</span> <span class="nf">timefromparts_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="L-483"><a href="#L-483"><span class="linenos">483</span></a> <span class="n">nano</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nano&quot;</span><span class="p">)</span>
+</span><span id="L-484"><a href="#L-484"><span class="linenos">484</span></a> <span class="k">if</span> <span class="n">nano</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+</span><span id="L-485"><a href="#L-485"><span class="linenos">485</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span>
+</span><span id="L-486"><a href="#L-486"><span class="linenos">486</span></a> <span class="s2">&quot;sec&quot;</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;sec&quot;</span><span class="p">]</span> <span class="o">+</span> <span class="n">nano</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000000000.0</span><span class="p">)</span>
+</span><span id="L-487"><a href="#L-487"><span class="linenos">487</span></a> <span class="p">)</span>
+</span><span id="L-488"><a href="#L-488"><span class="linenos">488</span></a>
+</span><span id="L-489"><a href="#L-489"><span class="linenos">489</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_TIME&quot;</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
+</span><span id="L-490"><a href="#L-490"><span class="linenos">490</span></a>
+</span><span id="L-491"><a href="#L-491"><span class="linenos">491</span></a> <span class="k">def</span> <span class="nf">timestampfromparts_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="L-492"><a href="#L-492"><span class="linenos">492</span></a> <span class="n">sec</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;sec&quot;</span><span class="p">]</span>
+</span><span id="L-493"><a href="#L-493"><span class="linenos">493</span></a>
+</span><span id="L-494"><a href="#L-494"><span class="linenos">494</span></a> <span class="n">milli</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;milli&quot;</span><span class="p">)</span>
+</span><span id="L-495"><a href="#L-495"><span class="linenos">495</span></a> <span class="k">if</span> <span class="n">milli</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+</span><span id="L-496"><a href="#L-496"><span class="linenos">496</span></a> <span class="n">sec</span> <span class="o">+=</span> <span class="n">milli</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000.0</span><span class="p">)</span>
+</span><span id="L-497"><a href="#L-497"><span class="linenos">497</span></a>
+</span><span id="L-498"><a href="#L-498"><span class="linenos">498</span></a> <span class="n">nano</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nano&quot;</span><span class="p">)</span>
+</span><span id="L-499"><a href="#L-499"><span class="linenos">499</span></a> <span class="k">if</span> <span class="n">nano</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+</span><span id="L-500"><a href="#L-500"><span class="linenos">500</span></a> <span class="n">sec</span> <span class="o">+=</span> <span class="n">nano</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000000000.0</span><span class="p">)</span>
+</span><span id="L-501"><a href="#L-501"><span class="linenos">501</span></a>
+</span><span id="L-502"><a href="#L-502"><span class="linenos">502</span></a> <span class="k">if</span> <span class="n">milli</span> <span class="ow">or</span> <span class="n">nano</span><span class="p">:</span>
+</span><span id="L-503"><a href="#L-503"><span class="linenos">503</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;sec&quot;</span><span class="p">,</span> <span class="n">sec</span><span class="p">)</span>
+</span><span id="L-504"><a href="#L-504"><span class="linenos">504</span></a>
+</span><span id="L-505"><a href="#L-505"><span class="linenos">505</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_TIMESTAMP&quot;</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
+</span><span id="L-506"><a href="#L-506"><span class="linenos">506</span></a>
+</span><span id="L-507"><a href="#L-507"><span class="linenos">507</span></a> <span class="k">def</span> <span class="nf">tablesample_sql</span><span class="p">(</span>
+</span><span id="L-508"><a href="#L-508"><span class="linenos">508</span></a> <span class="bp">self</span><span class="p">,</span>
+</span><span id="L-509"><a href="#L-509"><span class="linenos">509</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">,</span>
+</span><span id="L-510"><a href="#L-510"><span class="linenos">510</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot; AS &quot;</span><span class="p">,</span>
+</span><span id="L-511"><a href="#L-511"><span class="linenos">511</span></a> <span class="n">tablesample_keyword</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="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
+</span><span id="L-512"><a href="#L-512"><span class="linenos">512</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="L-513"><a href="#L-513"><span class="linenos">513</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span>
+</span><span id="L-514"><a href="#L-514"><span class="linenos">514</span></a> <span class="c1"># This sample clause only applies to a single source, not the entire resulting relation</span>
+</span><span id="L-515"><a href="#L-515"><span class="linenos">515</span></a> <span class="n">tablesample_keyword</span> <span class="o">=</span> <span class="s2">&quot;TABLESAMPLE&quot;</span>
+</span><span id="L-516"><a href="#L-516"><span class="linenos">516</span></a>
+</span><span id="L-517"><a href="#L-517"><span class="linenos">517</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">tablesample_sql</span><span class="p">(</span>
+</span><span id="L-518"><a href="#L-518"><span class="linenos">518</span></a> <span class="n">expression</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span> <span class="n">tablesample_keyword</span><span class="o">=</span><span class="n">tablesample_keyword</span>
+</span><span id="L-519"><a href="#L-519"><span class="linenos">519</span></a> <span class="p">)</span>
+</span><span id="L-520"><a href="#L-520"><span class="linenos">520</span></a>
+</span><span id="L-521"><a href="#L-521"><span class="linenos">521</span></a> <span class="k">def</span> <span class="nf">interval_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="L-522"><a href="#L-522"><span class="linenos">522</span></a> <span class="n">multiplier</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="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
+</span><span id="L-523"><a href="#L-523"><span class="linenos">523</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">&quot;unit&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
+</span><span id="L-524"><a href="#L-524"><span class="linenos">524</span></a>
+</span><span id="L-525"><a href="#L-525"><span class="linenos">525</span></a> <span class="k">if</span> <span class="n">unit</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;week&quot;</span><span class="p">):</span>
+</span><span id="L-526"><a href="#L-526"><span class="linenos">526</span></a> <span class="n">multiplier</span> <span class="o">=</span> <span class="mi">7</span>
+</span><span id="L-527"><a href="#L-527"><span class="linenos">527</span></a> <span class="k">if</span> <span class="n">unit</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;quarter&quot;</span><span class="p">):</span>
+</span><span id="L-528"><a href="#L-528"><span class="linenos">528</span></a> <span class="n">multiplier</span> <span class="o">=</span> <span class="mi">90</span>
+</span><span id="L-529"><a href="#L-529"><span class="linenos">529</span></a>
+</span><span id="L-530"><a href="#L-530"><span class="linenos">530</span></a> <span class="k">if</span> <span class="n">multiplier</span><span class="p">:</span>
+</span><span id="L-531"><a href="#L-531"><span class="linenos">531</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;(</span><span class="si">{</span><span class="n">multiplier</span><span class="si">}</span><span class="s2"> * </span><span class="si">{</span><span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s1">&#39;DAY&#39;</span><span class="p">)))</span><span class="si">}</span><span class="s2">)&quot;</span>
+</span><span id="L-532"><a href="#L-532"><span class="linenos">532</span></a>
+</span><span id="L-533"><a href="#L-533"><span class="linenos">533</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
+</span><span id="L-534"><a href="#L-534"><span class="linenos">534</span></a>
+</span><span id="L-535"><a href="#L-535"><span class="linenos">535</span></a> <span class="k">def</span> <span class="nf">columndef_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot; &quot;</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="L-536"><a href="#L-536"><span class="linenos">536</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UserDefinedFunction</span><span class="p">):</span>
+</span><span id="L-537"><a href="#L-537"><span class="linenos">537</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
+</span><span id="L-538"><a href="#L-538"><span class="linenos">538</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">columndef_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sep</span><span class="p">)</span>
+</span><span id="L-539"><a href="#L-539"><span class="linenos">539</span></a>
+</span><span id="L-540"><a href="#L-540"><span class="linenos">540</span></a> <span class="k">def</span> <span class="nf">placeholder_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="L-541"><a href="#L-541"><span class="linenos">541</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;$</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">&quot;?&quot;</span>
</span></pre></div>
@@ -998,211 +1002,212 @@
</span><span id="DuckDB-334"><a href="#DuckDB-334"><span class="linenos">334</span></a> <span class="n">IGNORE_NULLS_IN_FUNC</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="DuckDB-335"><a href="#DuckDB-335"><span class="linenos">335</span></a> <span class="n">JSON_PATH_BRACKETED_KEY_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="DuckDB-336"><a href="#DuckDB-336"><span class="linenos">336</span></a> <span class="n">SUPPORTS_CREATE_TABLE_LIKE</span> <span class="o">=</span> <span class="kc">False</span>
-</span><span id="DuckDB-337"><a href="#DuckDB-337"><span class="linenos">337</span></a>
-</span><span id="DuckDB-338"><a href="#DuckDB-338"><span class="linenos">338</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="DuckDB-339"><a href="#DuckDB-339"><span class="linenos">339</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span>
-</span><span id="DuckDB-340"><a href="#DuckDB-340"><span class="linenos">340</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">approx_count_distinct_sql</span><span class="p">,</span>
-</span><span id="DuckDB-341"><a href="#DuckDB-341"><span class="linenos">341</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="p">(</span>
-</span><span id="DuckDB-342"><a href="#DuckDB-342"><span class="linenos">342</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;ARRAY&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
-</span><span id="DuckDB-343"><a href="#DuckDB-343"><span class="linenos">343</span></a> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span> <span class="ow">and</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span>
-</span><span id="DuckDB-344"><a href="#DuckDB-344"><span class="linenos">344</span></a> <span class="k">else</span> <span class="n">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span>
-</span><span id="DuckDB-345"><a href="#DuckDB-345"><span class="linenos">345</span></a> <span class="p">),</span>
-</span><span id="DuckDB-346"><a href="#DuckDB-346"><span class="linenos">346</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySize</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ARRAY_LENGTH&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-347"><a href="#DuckDB-347"><span class="linenos">347</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span><span class="p">:</span> <span class="n">arg_max_or_min_no_count</span><span class="p">(</span><span class="s2">&quot;ARG_MAX&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-348"><a href="#DuckDB-348"><span class="linenos">348</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">:</span> <span class="n">arg_max_or_min_no_count</span><span class="p">(</span><span class="s2">&quot;ARG_MIN&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-349"><a href="#DuckDB-349"><span class="linenos">349</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySort</span><span class="p">:</span> <span class="n">_array_sort_sql</span><span class="p">,</span>
-</span><span id="DuckDB-350"><a href="#DuckDB-350"><span class="linenos">350</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;LIST_SUM&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-351"><a href="#DuckDB-351"><span class="linenos">351</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;XOR&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-352"><a href="#DuckDB-352"><span class="linenos">352</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">:</span> <span class="n">no_comment_column_constraint_sql</span><span class="p">,</span>
-</span><span id="DuckDB-353"><a href="#DuckDB-353"><span class="linenos">353</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">&quot;CURRENT_DATE&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-354"><a href="#DuckDB-354"><span class="linenos">354</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTime</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">&quot;CURRENT_TIME&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-355"><a href="#DuckDB-355"><span class="linenos">355</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">&quot;CURRENT_TIMESTAMP&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-356"><a href="#DuckDB-356"><span class="linenos">356</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfMonth</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAYOFMONTH&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-357"><a href="#DuckDB-357"><span class="linenos">357</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAYOFWEEK&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-358"><a href="#DuckDB-358"><span class="linenos">358</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAYOFYEAR&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-359"><a href="#DuckDB-359"><span class="linenos">359</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</span><span class="p">,</span>
-</span><span id="DuckDB-360"><a href="#DuckDB-360"><span class="linenos">360</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Date</span><span class="p">:</span> <span class="n">_date_sql</span><span class="p">,</span>
-</span><span id="DuckDB-361"><a href="#DuckDB-361"><span class="linenos">361</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">,</span>
-</span><span id="DuckDB-362"><a href="#DuckDB-362"><span class="linenos">362</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_DATE&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-363"><a href="#DuckDB-363"><span class="linenos">363</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">,</span>
-</span><span id="DuckDB-364"><a href="#DuckDB-364"><span class="linenos">364</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
-</span><span id="DuckDB-365"><a href="#DuckDB-365"><span class="linenos">365</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;&#39;</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;unit&#39;</span><span class="p">)</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">&#39;DAY&#39;</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span>
-</span><span id="DuckDB-366"><a href="#DuckDB-366"><span class="linenos">366</span></a> <span class="p">),</span>
-</span><span id="DuckDB-367"><a href="#DuckDB-367"><span class="linenos">367</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">:</span> <span class="n">datestrtodate_sql</span><span class="p">,</span>
-</span><span id="DuckDB-368"><a href="#DuckDB-368"><span class="linenos">368</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateToDi</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
-</span><span id="DuckDB-369"><a href="#DuckDB-369"><span class="linenos">369</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(STRFTIME(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">DATEINT_FORMAT</span><span class="si">}</span><span class="s2">) AS INT)&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-370"><a href="#DuckDB-370"><span class="linenos">370</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Decode</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="n">encode_decode_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="s2">&quot;DECODE&quot;</span><span class="p">,</span> <span class="n">replace</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
-</span><span id="DuckDB-371"><a href="#DuckDB-371"><span class="linenos">371</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DiToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
-</span><span id="DuckDB-372"><a href="#DuckDB-372"><span class="linenos">372</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(STRPTIME(CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">DATEINT_FORMAT</span><span class="si">}</span><span class="s2">) AS DATE)&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-373"><a href="#DuckDB-373"><span class="linenos">373</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Encode</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="n">encode_decode_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="s2">&quot;ENCODE&quot;</span><span class="p">,</span> <span class="n">replace</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
-</span><span id="DuckDB-374"><a href="#DuckDB-374"><span class="linenos">374</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;UNNEST&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-375"><a href="#DuckDB-375"><span class="linenos">375</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;//&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-376"><a href="#DuckDB-376"><span class="linenos">376</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsInf</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ISINF&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-377"><a href="#DuckDB-377"><span class="linenos">377</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsNan</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ISNAN&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-378"><a href="#DuckDB-378"><span class="linenos">378</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span>
-</span><span id="DuckDB-379"><a href="#DuckDB-379"><span class="linenos">379</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span>
-</span><span id="DuckDB-380"><a href="#DuckDB-380"><span class="linenos">380</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONFormat</span><span class="p">:</span> <span class="n">_json_format_sql</span><span class="p">,</span>
-</span><span id="DuckDB-381"><a href="#DuckDB-381"><span class="linenos">381</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalOr</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;BOOL_OR&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-382"><a href="#DuckDB-382"><span class="linenos">382</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalAnd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;BOOL_AND&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-383"><a href="#DuckDB-383"><span class="linenos">383</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MonthsBetween</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
-</span><span id="DuckDB-384"><a href="#DuckDB-384"><span class="linenos">384</span></a> <span class="s2">&quot;DATEDIFF&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-385"><a href="#DuckDB-385"><span class="linenos">385</span></a> <span class="s2">&quot;&#39;month&#39;&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-386"><a href="#DuckDB-386"><span class="linenos">386</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;timestamp&quot;</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
-</span><span id="DuckDB-387"><a href="#DuckDB-387"><span class="linenos">387</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">&quot;timestamp&quot;</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
-</span><span id="DuckDB-388"><a href="#DuckDB-388"><span class="linenos">388</span></a> <span class="p">),</span>
-</span><span id="DuckDB-389"><a href="#DuckDB-389"><span class="linenos">389</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;JSON&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-390"><a href="#DuckDB-390"><span class="linenos">390</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileCont</span><span class="p">:</span> <span class="n">_rename_unless_within_group</span><span class="p">(</span><span class="s2">&quot;PERCENTILE_CONT&quot;</span><span class="p">,</span> <span class="s2">&quot;QUANTILE_CONT&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-391"><a href="#DuckDB-391"><span class="linenos">391</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileDisc</span><span class="p">:</span> <span class="n">_rename_unless_within_group</span><span class="p">(</span><span class="s2">&quot;PERCENTILE_DISC&quot;</span><span class="p">,</span> <span class="s2">&quot;QUANTILE_DISC&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-392"><a href="#DuckDB-392"><span class="linenos">392</span></a> <span class="c1"># DuckDB doesn&#39;t allow qualified columns inside of PIVOT expressions.</span>
-</span><span id="DuckDB-393"><a href="#DuckDB-393"><span class="linenos">393</span></a> <span class="c1"># See: https://github.com/duckdb/duckdb/blob/671faf92411182f81dce42ac43de8bfb05d9909e/src/planner/binder/tableref/bind_pivot.cpp#L61-L62</span>
-</span><span id="DuckDB-394"><a href="#DuckDB-394"><span class="linenos">394</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">unqualify_columns</span><span class="p">]),</span>
-</span><span id="DuckDB-395"><a href="#DuckDB-395"><span class="linenos">395</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpExtract</span><span class="p">:</span> <span class="n">regexp_extract_sql</span><span class="p">,</span>
-</span><span id="DuckDB-396"><a href="#DuckDB-396"><span class="linenos">396</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpReplace</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
-</span><span id="DuckDB-397"><a href="#DuckDB-397"><span class="linenos">397</span></a> <span class="s2">&quot;REGEXP_REPLACE&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-398"><a href="#DuckDB-398"><span class="linenos">398</span></a> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
-</span><span id="DuckDB-399"><a href="#DuckDB-399"><span class="linenos">399</span></a> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span>
-</span><span id="DuckDB-400"><a href="#DuckDB-400"><span class="linenos">400</span></a> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;replacement&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-401"><a href="#DuckDB-401"><span class="linenos">401</span></a> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;modifiers&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-402"><a href="#DuckDB-402"><span class="linenos">402</span></a> <span class="p">),</span>
-</span><span id="DuckDB-403"><a href="#DuckDB-403"><span class="linenos">403</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;REGEXP_MATCHES&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-404"><a href="#DuckDB-404"><span class="linenos">404</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;STR_SPLIT_REGEX&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-405"><a href="#DuckDB-405"><span class="linenos">405</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;RANDOM&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-406"><a href="#DuckDB-406"><span class="linenos">406</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SafeDivide</span><span class="p">:</span> <span class="n">no_safe_divide_sql</span><span class="p">,</span>
-</span><span id="DuckDB-407"><a href="#DuckDB-407"><span class="linenos">407</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;STR_SPLIT&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-408"><a href="#DuckDB-408"><span class="linenos">408</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="p">:</span> <span class="n">_sort_array_sql</span><span class="p">,</span>
-</span><span id="DuckDB-409"><a href="#DuckDB-409"><span class="linenos">409</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span>
-</span><span id="DuckDB-410"><a href="#DuckDB-410"><span class="linenos">410</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(</span><span class="si">{</span><span class="n">str_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-411"><a href="#DuckDB-411"><span class="linenos">411</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">:</span> <span class="n">str_to_time_sql</span><span class="p">,</span>
-</span><span id="DuckDB-412"><a href="#DuckDB-412"><span class="linenos">412</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
-</span><span id="DuckDB-413"><a href="#DuckDB-413"><span class="linenos">413</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;EPOCH(STRPTIME(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">))&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-414"><a href="#DuckDB-414"><span class="linenos">414</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">:</span> <span class="n">_struct_sql</span><span class="p">,</span>
-</span><span id="DuckDB-415"><a href="#DuckDB-415"><span class="linenos">415</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Timestamp</span><span class="p">:</span> <span class="n">no_timestamp_sql</span><span class="p">,</span>
-</span><span id="DuckDB-416"><a href="#DuckDB-416"><span class="linenos">416</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampDiff</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
-</span><span id="DuckDB-417"><a href="#DuckDB-417"><span class="linenos">417</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">unit</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span>
-</span><span id="DuckDB-418"><a href="#DuckDB-418"><span class="linenos">418</span></a> <span class="p">),</span>
-</span><span id="DuckDB-419"><a href="#DuckDB-419"><span class="linenos">419</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> <span class="n">timestamptrunc_sql</span><span class="p">,</span>
-</span><span id="DuckDB-420"><a href="#DuckDB-420"><span class="linenos">420</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-421"><a href="#DuckDB-421"><span class="linenos">421</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">:</span> <span class="n">timestrtotime_sql</span><span class="p">,</span>
-</span><span id="DuckDB-422"><a href="#DuckDB-422"><span class="linenos">422</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToUnix</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;EPOCH(CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TIMESTAMP))&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-423"><a href="#DuckDB-423"><span class="linenos">423</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
-</span><span id="DuckDB-424"><a href="#DuckDB-424"><span class="linenos">424</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;STRFTIME(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-425"><a href="#DuckDB-425"><span class="linenos">425</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;EPOCH&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-426"><a href="#DuckDB-426"><span class="linenos">426</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDiToDi</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
-</span><span id="DuckDB-427"><a href="#DuckDB-427"><span class="linenos">427</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(SUBSTR(REPLACE(CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), &#39;-&#39;, &#39;&#39;), 1, 8) AS INT)&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-428"><a href="#DuckDB-428"><span class="linenos">428</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">:</span> <span class="n">_ts_or_ds_add_sql</span><span class="p">,</span>
-</span><span id="DuckDB-429"><a href="#DuckDB-429"><span class="linenos">429</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsDiff</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
-</span><span id="DuckDB-430"><a href="#DuckDB-430"><span class="linenos">430</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-431"><a href="#DuckDB-431"><span class="linenos">431</span></a> <span class="sa">f</span><span class="s2">&quot;&#39;</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;unit&#39;</span><span class="p">)</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">&#39;DAY&#39;</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-432"><a href="#DuckDB-432"><span class="linenos">432</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;TIMESTAMP&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-433"><a href="#DuckDB-433"><span class="linenos">433</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">&quot;TIMESTAMP&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-434"><a href="#DuckDB-434"><span class="linenos">434</span></a> <span class="p">),</span>
-</span><span id="DuckDB-435"><a href="#DuckDB-435"><span class="linenos">435</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
-</span><span id="DuckDB-436"><a href="#DuckDB-436"><span class="linenos">436</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;STRFTIME(TO_TIMESTAMP(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">), </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-437"><a href="#DuckDB-437"><span class="linenos">437</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">_unix_to_time_sql</span><span class="p">,</span>
-</span><span id="DuckDB-438"><a href="#DuckDB-438"><span class="linenos">438</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTimeStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(TO_TIMESTAMP(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">) AS TEXT)&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-439"><a href="#DuckDB-439"><span class="linenos">439</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VariancePop</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;VAR_POP&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-440"><a href="#DuckDB-440"><span class="linenos">440</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WeekOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;WEEKOFYEAR&quot;</span><span class="p">),</span>
-</span><span id="DuckDB-441"><a href="#DuckDB-441"><span class="linenos">441</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">:</span> <span class="n">bool_xor_sql</span><span class="p">,</span>
-</span><span id="DuckDB-442"><a href="#DuckDB-442"><span class="linenos">442</span></a> <span class="p">}</span>
-</span><span id="DuckDB-443"><a href="#DuckDB-443"><span class="linenos">443</span></a>
-</span><span id="DuckDB-444"><a href="#DuckDB-444"><span class="linenos">444</span></a> <span class="n">SUPPORTED_JSON_PATH_PARTS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="DuckDB-445"><a href="#DuckDB-445"><span class="linenos">445</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">,</span>
-</span><span id="DuckDB-446"><a href="#DuckDB-446"><span class="linenos">446</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">,</span>
-</span><span id="DuckDB-447"><a href="#DuckDB-447"><span class="linenos">447</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">,</span>
-</span><span id="DuckDB-448"><a href="#DuckDB-448"><span class="linenos">448</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">,</span>
-</span><span id="DuckDB-449"><a href="#DuckDB-449"><span class="linenos">449</span></a> <span class="p">}</span>
-</span><span id="DuckDB-450"><a href="#DuckDB-450"><span class="linenos">450</span></a>
-</span><span id="DuckDB-451"><a href="#DuckDB-451"><span class="linenos">451</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="DuckDB-452"><a href="#DuckDB-452"><span class="linenos">452</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="p">,</span>
-</span><span id="DuckDB-453"><a href="#DuckDB-453"><span class="linenos">453</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BINARY</span><span class="p">:</span> <span class="s2">&quot;BLOB&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-454"><a href="#DuckDB-454"><span class="linenos">454</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-455"><a href="#DuckDB-455"><span class="linenos">455</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">:</span> <span class="s2">&quot;REAL&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-456"><a href="#DuckDB-456"><span class="linenos">456</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-457"><a href="#DuckDB-457"><span class="linenos">457</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-458"><a href="#DuckDB-458"><span class="linenos">458</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UINT</span><span class="p">:</span> <span class="s2">&quot;UINTEGER&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-459"><a href="#DuckDB-459"><span class="linenos">459</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">:</span> <span class="s2">&quot;BLOB&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-460"><a href="#DuckDB-460"><span class="linenos">460</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-461"><a href="#DuckDB-461"><span class="linenos">461</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_S</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP_S&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-462"><a href="#DuckDB-462"><span class="linenos">462</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_MS</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP_MS&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-463"><a href="#DuckDB-463"><span class="linenos">463</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_NS</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP_NS&quot;</span><span class="p">,</span>
-</span><span id="DuckDB-464"><a href="#DuckDB-464"><span class="linenos">464</span></a> <span class="p">}</span>
-</span><span id="DuckDB-465"><a href="#DuckDB-465"><span class="linenos">465</span></a>
-</span><span id="DuckDB-466"><a href="#DuckDB-466"><span class="linenos">466</span></a> <span class="n">STAR_MAPPING</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">STAR_MAPPING</span><span class="p">,</span> <span class="s2">&quot;except&quot;</span><span class="p">:</span> <span class="s2">&quot;EXCLUDE&quot;</span><span class="p">}</span>
-</span><span id="DuckDB-467"><a href="#DuckDB-467"><span class="linenos">467</span></a>
-</span><span id="DuckDB-468"><a href="#DuckDB-468"><span class="linenos">468</span></a> <span class="n">UNWRAPPED_INTERVAL_VALUES</span> <span class="o">=</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span>
-</span><span id="DuckDB-469"><a href="#DuckDB-469"><span class="linenos">469</span></a>
-</span><span id="DuckDB-470"><a href="#DuckDB-470"><span class="linenos">470</span></a> <span class="c1"># DuckDB doesn&#39;t generally support CREATE TABLE .. properties</span>
-</span><span id="DuckDB-471"><a href="#DuckDB-471"><span class="linenos">471</span></a> <span class="c1"># https://duckdb.org/docs/sql/statements/create_table.html</span>
-</span><span id="DuckDB-472"><a href="#DuckDB-472"><span class="linenos">472</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="DuckDB-473"><a href="#DuckDB-473"><span class="linenos">473</span></a> <span class="n">prop</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span>
-</span><span id="DuckDB-474"><a href="#DuckDB-474"><span class="linenos">474</span></a> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span>
-</span><span id="DuckDB-475"><a href="#DuckDB-475"><span class="linenos">475</span></a> <span class="p">}</span>
-</span><span id="DuckDB-476"><a href="#DuckDB-476"><span class="linenos">476</span></a>
-</span><span id="DuckDB-477"><a href="#DuckDB-477"><span class="linenos">477</span></a> <span class="c1"># There are a few exceptions (e.g. temporary tables) which are supported or</span>
-</span><span id="DuckDB-478"><a href="#DuckDB-478"><span class="linenos">478</span></a> <span class="c1"># can be transpiled to DuckDB, so we explicitly override them accordingly</span>
-</span><span id="DuckDB-479"><a href="#DuckDB-479"><span class="linenos">479</span></a> <span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span>
-</span><span id="DuckDB-480"><a href="#DuckDB-480"><span class="linenos">480</span></a> <span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</span><span class="p">]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span>
-</span><span id="DuckDB-481"><a href="#DuckDB-481"><span class="linenos">481</span></a>
-</span><span id="DuckDB-482"><a href="#DuckDB-482"><span class="linenos">482</span></a> <span class="k">def</span> <span class="nf">timefromparts_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="DuckDB-483"><a href="#DuckDB-483"><span class="linenos">483</span></a> <span class="n">nano</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nano&quot;</span><span class="p">)</span>
-</span><span id="DuckDB-484"><a href="#DuckDB-484"><span class="linenos">484</span></a> <span class="k">if</span> <span class="n">nano</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
-</span><span id="DuckDB-485"><a href="#DuckDB-485"><span class="linenos">485</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span>
-</span><span id="DuckDB-486"><a href="#DuckDB-486"><span class="linenos">486</span></a> <span class="s2">&quot;sec&quot;</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;sec&quot;</span><span class="p">]</span> <span class="o">+</span> <span class="n">nano</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000000000.0</span><span class="p">)</span>
-</span><span id="DuckDB-487"><a href="#DuckDB-487"><span class="linenos">487</span></a> <span class="p">)</span>
-</span><span id="DuckDB-488"><a href="#DuckDB-488"><span class="linenos">488</span></a>
-</span><span id="DuckDB-489"><a href="#DuckDB-489"><span class="linenos">489</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_TIME&quot;</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
-</span><span id="DuckDB-490"><a href="#DuckDB-490"><span class="linenos">490</span></a>
-</span><span id="DuckDB-491"><a href="#DuckDB-491"><span class="linenos">491</span></a> <span class="k">def</span> <span class="nf">timestampfromparts_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="DuckDB-492"><a href="#DuckDB-492"><span class="linenos">492</span></a> <span class="n">sec</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;sec&quot;</span><span class="p">]</span>
-</span><span id="DuckDB-493"><a href="#DuckDB-493"><span class="linenos">493</span></a>
-</span><span id="DuckDB-494"><a href="#DuckDB-494"><span class="linenos">494</span></a> <span class="n">milli</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;milli&quot;</span><span class="p">)</span>
-</span><span id="DuckDB-495"><a href="#DuckDB-495"><span class="linenos">495</span></a> <span class="k">if</span> <span class="n">milli</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
-</span><span id="DuckDB-496"><a href="#DuckDB-496"><span class="linenos">496</span></a> <span class="n">sec</span> <span class="o">+=</span> <span class="n">milli</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000.0</span><span class="p">)</span>
-</span><span id="DuckDB-497"><a href="#DuckDB-497"><span class="linenos">497</span></a>
-</span><span id="DuckDB-498"><a href="#DuckDB-498"><span class="linenos">498</span></a> <span class="n">nano</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nano&quot;</span><span class="p">)</span>
-</span><span id="DuckDB-499"><a href="#DuckDB-499"><span class="linenos">499</span></a> <span class="k">if</span> <span class="n">nano</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
-</span><span id="DuckDB-500"><a href="#DuckDB-500"><span class="linenos">500</span></a> <span class="n">sec</span> <span class="o">+=</span> <span class="n">nano</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000000000.0</span><span class="p">)</span>
-</span><span id="DuckDB-501"><a href="#DuckDB-501"><span class="linenos">501</span></a>
-</span><span id="DuckDB-502"><a href="#DuckDB-502"><span class="linenos">502</span></a> <span class="k">if</span> <span class="n">milli</span> <span class="ow">or</span> <span class="n">nano</span><span class="p">:</span>
-</span><span id="DuckDB-503"><a href="#DuckDB-503"><span class="linenos">503</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;sec&quot;</span><span class="p">,</span> <span class="n">sec</span><span class="p">)</span>
-</span><span id="DuckDB-504"><a href="#DuckDB-504"><span class="linenos">504</span></a>
-</span><span id="DuckDB-505"><a href="#DuckDB-505"><span class="linenos">505</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_TIMESTAMP&quot;</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
-</span><span id="DuckDB-506"><a href="#DuckDB-506"><span class="linenos">506</span></a>
-</span><span id="DuckDB-507"><a href="#DuckDB-507"><span class="linenos">507</span></a> <span class="k">def</span> <span class="nf">tablesample_sql</span><span class="p">(</span>
-</span><span id="DuckDB-508"><a href="#DuckDB-508"><span class="linenos">508</span></a> <span class="bp">self</span><span class="p">,</span>
-</span><span id="DuckDB-509"><a href="#DuckDB-509"><span class="linenos">509</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">,</span>
-</span><span id="DuckDB-510"><a href="#DuckDB-510"><span class="linenos">510</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot; AS &quot;</span><span class="p">,</span>
-</span><span id="DuckDB-511"><a href="#DuckDB-511"><span class="linenos">511</span></a> <span class="n">tablesample_keyword</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="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
-</span><span id="DuckDB-512"><a href="#DuckDB-512"><span class="linenos">512</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="DuckDB-513"><a href="#DuckDB-513"><span class="linenos">513</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span>
-</span><span id="DuckDB-514"><a href="#DuckDB-514"><span class="linenos">514</span></a> <span class="c1"># This sample clause only applies to a single source, not the entire resulting relation</span>
-</span><span id="DuckDB-515"><a href="#DuckDB-515"><span class="linenos">515</span></a> <span class="n">tablesample_keyword</span> <span class="o">=</span> <span class="s2">&quot;TABLESAMPLE&quot;</span>
-</span><span id="DuckDB-516"><a href="#DuckDB-516"><span class="linenos">516</span></a>
-</span><span id="DuckDB-517"><a href="#DuckDB-517"><span class="linenos">517</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">tablesample_sql</span><span class="p">(</span>
-</span><span id="DuckDB-518"><a href="#DuckDB-518"><span class="linenos">518</span></a> <span class="n">expression</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span> <span class="n">tablesample_keyword</span><span class="o">=</span><span class="n">tablesample_keyword</span>
-</span><span id="DuckDB-519"><a href="#DuckDB-519"><span class="linenos">519</span></a> <span class="p">)</span>
-</span><span id="DuckDB-520"><a href="#DuckDB-520"><span class="linenos">520</span></a>
-</span><span id="DuckDB-521"><a href="#DuckDB-521"><span class="linenos">521</span></a> <span class="k">def</span> <span class="nf">interval_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="DuckDB-522"><a href="#DuckDB-522"><span class="linenos">522</span></a> <span class="n">multiplier</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="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
-</span><span id="DuckDB-523"><a href="#DuckDB-523"><span class="linenos">523</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">&quot;unit&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
-</span><span id="DuckDB-524"><a href="#DuckDB-524"><span class="linenos">524</span></a>
-</span><span id="DuckDB-525"><a href="#DuckDB-525"><span class="linenos">525</span></a> <span class="k">if</span> <span class="n">unit</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;week&quot;</span><span class="p">):</span>
-</span><span id="DuckDB-526"><a href="#DuckDB-526"><span class="linenos">526</span></a> <span class="n">multiplier</span> <span class="o">=</span> <span class="mi">7</span>
-</span><span id="DuckDB-527"><a href="#DuckDB-527"><span class="linenos">527</span></a> <span class="k">if</span> <span class="n">unit</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;quarter&quot;</span><span class="p">):</span>
-</span><span id="DuckDB-528"><a href="#DuckDB-528"><span class="linenos">528</span></a> <span class="n">multiplier</span> <span class="o">=</span> <span class="mi">90</span>
-</span><span id="DuckDB-529"><a href="#DuckDB-529"><span class="linenos">529</span></a>
-</span><span id="DuckDB-530"><a href="#DuckDB-530"><span class="linenos">530</span></a> <span class="k">if</span> <span class="n">multiplier</span><span class="p">:</span>
-</span><span id="DuckDB-531"><a href="#DuckDB-531"><span class="linenos">531</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;(</span><span class="si">{</span><span class="n">multiplier</span><span class="si">}</span><span class="s2"> * </span><span class="si">{</span><span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s1">&#39;DAY&#39;</span><span class="p">)))</span><span class="si">}</span><span class="s2">)&quot;</span>
-</span><span id="DuckDB-532"><a href="#DuckDB-532"><span class="linenos">532</span></a>
-</span><span id="DuckDB-533"><a href="#DuckDB-533"><span class="linenos">533</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
-</span><span id="DuckDB-534"><a href="#DuckDB-534"><span class="linenos">534</span></a>
-</span><span id="DuckDB-535"><a href="#DuckDB-535"><span class="linenos">535</span></a> <span class="k">def</span> <span class="nf">columndef_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot; &quot;</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="DuckDB-536"><a href="#DuckDB-536"><span class="linenos">536</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UserDefinedFunction</span><span class="p">):</span>
-</span><span id="DuckDB-537"><a href="#DuckDB-537"><span class="linenos">537</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
-</span><span id="DuckDB-538"><a href="#DuckDB-538"><span class="linenos">538</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">columndef_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sep</span><span class="p">)</span>
-</span><span id="DuckDB-539"><a href="#DuckDB-539"><span class="linenos">539</span></a>
-</span><span id="DuckDB-540"><a href="#DuckDB-540"><span class="linenos">540</span></a> <span class="k">def</span> <span class="nf">placeholder_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="DuckDB-541"><a href="#DuckDB-541"><span class="linenos">541</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;$</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">&quot;?&quot;</span>
+</span><span id="DuckDB-337"><a href="#DuckDB-337"><span class="linenos">337</span></a> <span class="n">MULTI_ARG_DISTINCT</span> <span class="o">=</span> <span class="kc">False</span>
+</span><span id="DuckDB-338"><a href="#DuckDB-338"><span class="linenos">338</span></a>
+</span><span id="DuckDB-339"><a href="#DuckDB-339"><span class="linenos">339</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="DuckDB-340"><a href="#DuckDB-340"><span class="linenos">340</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span>
+</span><span id="DuckDB-341"><a href="#DuckDB-341"><span class="linenos">341</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">approx_count_distinct_sql</span><span class="p">,</span>
+</span><span id="DuckDB-342"><a href="#DuckDB-342"><span class="linenos">342</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="p">(</span>
+</span><span id="DuckDB-343"><a href="#DuckDB-343"><span class="linenos">343</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;ARRAY&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+</span><span id="DuckDB-344"><a href="#DuckDB-344"><span class="linenos">344</span></a> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span> <span class="ow">and</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span>
+</span><span id="DuckDB-345"><a href="#DuckDB-345"><span class="linenos">345</span></a> <span class="k">else</span> <span class="n">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span>
+</span><span id="DuckDB-346"><a href="#DuckDB-346"><span class="linenos">346</span></a> <span class="p">),</span>
+</span><span id="DuckDB-347"><a href="#DuckDB-347"><span class="linenos">347</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySize</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ARRAY_LENGTH&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-348"><a href="#DuckDB-348"><span class="linenos">348</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span><span class="p">:</span> <span class="n">arg_max_or_min_no_count</span><span class="p">(</span><span class="s2">&quot;ARG_MAX&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-349"><a href="#DuckDB-349"><span class="linenos">349</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">:</span> <span class="n">arg_max_or_min_no_count</span><span class="p">(</span><span class="s2">&quot;ARG_MIN&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-350"><a href="#DuckDB-350"><span class="linenos">350</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySort</span><span class="p">:</span> <span class="n">_array_sort_sql</span><span class="p">,</span>
+</span><span id="DuckDB-351"><a href="#DuckDB-351"><span class="linenos">351</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;LIST_SUM&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-352"><a href="#DuckDB-352"><span class="linenos">352</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;XOR&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-353"><a href="#DuckDB-353"><span class="linenos">353</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">:</span> <span class="n">no_comment_column_constraint_sql</span><span class="p">,</span>
+</span><span id="DuckDB-354"><a href="#DuckDB-354"><span class="linenos">354</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">&quot;CURRENT_DATE&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-355"><a href="#DuckDB-355"><span class="linenos">355</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTime</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">&quot;CURRENT_TIME&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-356"><a href="#DuckDB-356"><span class="linenos">356</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">&quot;CURRENT_TIMESTAMP&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-357"><a href="#DuckDB-357"><span class="linenos">357</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfMonth</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAYOFMONTH&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-358"><a href="#DuckDB-358"><span class="linenos">358</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAYOFWEEK&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-359"><a href="#DuckDB-359"><span class="linenos">359</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAYOFYEAR&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-360"><a href="#DuckDB-360"><span class="linenos">360</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</span><span class="p">,</span>
+</span><span id="DuckDB-361"><a href="#DuckDB-361"><span class="linenos">361</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Date</span><span class="p">:</span> <span class="n">_date_sql</span><span class="p">,</span>
+</span><span id="DuckDB-362"><a href="#DuckDB-362"><span class="linenos">362</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">,</span>
+</span><span id="DuckDB-363"><a href="#DuckDB-363"><span class="linenos">363</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_DATE&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-364"><a href="#DuckDB-364"><span class="linenos">364</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">,</span>
+</span><span id="DuckDB-365"><a href="#DuckDB-365"><span class="linenos">365</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
+</span><span id="DuckDB-366"><a href="#DuckDB-366"><span class="linenos">366</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;&#39;</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;unit&#39;</span><span class="p">)</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">&#39;DAY&#39;</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span>
+</span><span id="DuckDB-367"><a href="#DuckDB-367"><span class="linenos">367</span></a> <span class="p">),</span>
+</span><span id="DuckDB-368"><a href="#DuckDB-368"><span class="linenos">368</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">:</span> <span class="n">datestrtodate_sql</span><span class="p">,</span>
+</span><span id="DuckDB-369"><a href="#DuckDB-369"><span class="linenos">369</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateToDi</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
+</span><span id="DuckDB-370"><a href="#DuckDB-370"><span class="linenos">370</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(STRFTIME(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">DATEINT_FORMAT</span><span class="si">}</span><span class="s2">) AS INT)&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-371"><a href="#DuckDB-371"><span class="linenos">371</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Decode</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="n">encode_decode_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="s2">&quot;DECODE&quot;</span><span class="p">,</span> <span class="n">replace</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
+</span><span id="DuckDB-372"><a href="#DuckDB-372"><span class="linenos">372</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DiToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
+</span><span id="DuckDB-373"><a href="#DuckDB-373"><span class="linenos">373</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(STRPTIME(CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">DATEINT_FORMAT</span><span class="si">}</span><span class="s2">) AS DATE)&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-374"><a href="#DuckDB-374"><span class="linenos">374</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Encode</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="n">encode_decode_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="s2">&quot;ENCODE&quot;</span><span class="p">,</span> <span class="n">replace</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
+</span><span id="DuckDB-375"><a href="#DuckDB-375"><span class="linenos">375</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;UNNEST&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-376"><a href="#DuckDB-376"><span class="linenos">376</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;//&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-377"><a href="#DuckDB-377"><span class="linenos">377</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsInf</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ISINF&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-378"><a href="#DuckDB-378"><span class="linenos">378</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsNan</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ISNAN&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-379"><a href="#DuckDB-379"><span class="linenos">379</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span>
+</span><span id="DuckDB-380"><a href="#DuckDB-380"><span class="linenos">380</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span>
+</span><span id="DuckDB-381"><a href="#DuckDB-381"><span class="linenos">381</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONFormat</span><span class="p">:</span> <span class="n">_json_format_sql</span><span class="p">,</span>
+</span><span id="DuckDB-382"><a href="#DuckDB-382"><span class="linenos">382</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalOr</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;BOOL_OR&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-383"><a href="#DuckDB-383"><span class="linenos">383</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalAnd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;BOOL_AND&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-384"><a href="#DuckDB-384"><span class="linenos">384</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MonthsBetween</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
+</span><span id="DuckDB-385"><a href="#DuckDB-385"><span class="linenos">385</span></a> <span class="s2">&quot;DATEDIFF&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-386"><a href="#DuckDB-386"><span class="linenos">386</span></a> <span class="s2">&quot;&#39;month&#39;&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-387"><a href="#DuckDB-387"><span class="linenos">387</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;timestamp&quot;</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
+</span><span id="DuckDB-388"><a href="#DuckDB-388"><span class="linenos">388</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">&quot;timestamp&quot;</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
+</span><span id="DuckDB-389"><a href="#DuckDB-389"><span class="linenos">389</span></a> <span class="p">),</span>
+</span><span id="DuckDB-390"><a href="#DuckDB-390"><span class="linenos">390</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;JSON&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-391"><a href="#DuckDB-391"><span class="linenos">391</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileCont</span><span class="p">:</span> <span class="n">_rename_unless_within_group</span><span class="p">(</span><span class="s2">&quot;PERCENTILE_CONT&quot;</span><span class="p">,</span> <span class="s2">&quot;QUANTILE_CONT&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-392"><a href="#DuckDB-392"><span class="linenos">392</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileDisc</span><span class="p">:</span> <span class="n">_rename_unless_within_group</span><span class="p">(</span><span class="s2">&quot;PERCENTILE_DISC&quot;</span><span class="p">,</span> <span class="s2">&quot;QUANTILE_DISC&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-393"><a href="#DuckDB-393"><span class="linenos">393</span></a> <span class="c1"># DuckDB doesn&#39;t allow qualified columns inside of PIVOT expressions.</span>
+</span><span id="DuckDB-394"><a href="#DuckDB-394"><span class="linenos">394</span></a> <span class="c1"># See: https://github.com/duckdb/duckdb/blob/671faf92411182f81dce42ac43de8bfb05d9909e/src/planner/binder/tableref/bind_pivot.cpp#L61-L62</span>
+</span><span id="DuckDB-395"><a href="#DuckDB-395"><span class="linenos">395</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">unqualify_columns</span><span class="p">]),</span>
+</span><span id="DuckDB-396"><a href="#DuckDB-396"><span class="linenos">396</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpExtract</span><span class="p">:</span> <span class="n">regexp_extract_sql</span><span class="p">,</span>
+</span><span id="DuckDB-397"><a href="#DuckDB-397"><span class="linenos">397</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpReplace</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
+</span><span id="DuckDB-398"><a href="#DuckDB-398"><span class="linenos">398</span></a> <span class="s2">&quot;REGEXP_REPLACE&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-399"><a href="#DuckDB-399"><span class="linenos">399</span></a> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
+</span><span id="DuckDB-400"><a href="#DuckDB-400"><span class="linenos">400</span></a> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span>
+</span><span id="DuckDB-401"><a href="#DuckDB-401"><span class="linenos">401</span></a> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;replacement&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-402"><a href="#DuckDB-402"><span class="linenos">402</span></a> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;modifiers&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-403"><a href="#DuckDB-403"><span class="linenos">403</span></a> <span class="p">),</span>
+</span><span id="DuckDB-404"><a href="#DuckDB-404"><span class="linenos">404</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;REGEXP_MATCHES&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-405"><a href="#DuckDB-405"><span class="linenos">405</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;STR_SPLIT_REGEX&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-406"><a href="#DuckDB-406"><span class="linenos">406</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;RANDOM&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-407"><a href="#DuckDB-407"><span class="linenos">407</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SafeDivide</span><span class="p">:</span> <span class="n">no_safe_divide_sql</span><span class="p">,</span>
+</span><span id="DuckDB-408"><a href="#DuckDB-408"><span class="linenos">408</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;STR_SPLIT&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-409"><a href="#DuckDB-409"><span class="linenos">409</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="p">:</span> <span class="n">_sort_array_sql</span><span class="p">,</span>
+</span><span id="DuckDB-410"><a href="#DuckDB-410"><span class="linenos">410</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span>
+</span><span id="DuckDB-411"><a href="#DuckDB-411"><span class="linenos">411</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(</span><span class="si">{</span><span class="n">str_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-412"><a href="#DuckDB-412"><span class="linenos">412</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">:</span> <span class="n">str_to_time_sql</span><span class="p">,</span>
+</span><span id="DuckDB-413"><a href="#DuckDB-413"><span class="linenos">413</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
+</span><span id="DuckDB-414"><a href="#DuckDB-414"><span class="linenos">414</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;EPOCH(STRPTIME(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">))&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-415"><a href="#DuckDB-415"><span class="linenos">415</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">:</span> <span class="n">_struct_sql</span><span class="p">,</span>
+</span><span id="DuckDB-416"><a href="#DuckDB-416"><span class="linenos">416</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Timestamp</span><span class="p">:</span> <span class="n">no_timestamp_sql</span><span class="p">,</span>
+</span><span id="DuckDB-417"><a href="#DuckDB-417"><span class="linenos">417</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampDiff</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
+</span><span id="DuckDB-418"><a href="#DuckDB-418"><span class="linenos">418</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">unit</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span>
+</span><span id="DuckDB-419"><a href="#DuckDB-419"><span class="linenos">419</span></a> <span class="p">),</span>
+</span><span id="DuckDB-420"><a href="#DuckDB-420"><span class="linenos">420</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> <span class="n">timestamptrunc_sql</span><span class="p">,</span>
+</span><span id="DuckDB-421"><a href="#DuckDB-421"><span class="linenos">421</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-422"><a href="#DuckDB-422"><span class="linenos">422</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">:</span> <span class="n">timestrtotime_sql</span><span class="p">,</span>
+</span><span id="DuckDB-423"><a href="#DuckDB-423"><span class="linenos">423</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToUnix</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;EPOCH(CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TIMESTAMP))&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-424"><a href="#DuckDB-424"><span class="linenos">424</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
+</span><span id="DuckDB-425"><a href="#DuckDB-425"><span class="linenos">425</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;STRFTIME(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-426"><a href="#DuckDB-426"><span class="linenos">426</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;EPOCH&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-427"><a href="#DuckDB-427"><span class="linenos">427</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDiToDi</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
+</span><span id="DuckDB-428"><a href="#DuckDB-428"><span class="linenos">428</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(SUBSTR(REPLACE(CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), &#39;-&#39;, &#39;&#39;), 1, 8) AS INT)&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-429"><a href="#DuckDB-429"><span class="linenos">429</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">:</span> <span class="n">_ts_or_ds_add_sql</span><span class="p">,</span>
+</span><span id="DuckDB-430"><a href="#DuckDB-430"><span class="linenos">430</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsDiff</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
+</span><span id="DuckDB-431"><a href="#DuckDB-431"><span class="linenos">431</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-432"><a href="#DuckDB-432"><span class="linenos">432</span></a> <span class="sa">f</span><span class="s2">&quot;&#39;</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;unit&#39;</span><span class="p">)</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">&#39;DAY&#39;</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-433"><a href="#DuckDB-433"><span class="linenos">433</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;TIMESTAMP&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-434"><a href="#DuckDB-434"><span class="linenos">434</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">&quot;TIMESTAMP&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-435"><a href="#DuckDB-435"><span class="linenos">435</span></a> <span class="p">),</span>
+</span><span id="DuckDB-436"><a href="#DuckDB-436"><span class="linenos">436</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
+</span><span id="DuckDB-437"><a href="#DuckDB-437"><span class="linenos">437</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;STRFTIME(TO_TIMESTAMP(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">), </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-438"><a href="#DuckDB-438"><span class="linenos">438</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">_unix_to_time_sql</span><span class="p">,</span>
+</span><span id="DuckDB-439"><a href="#DuckDB-439"><span class="linenos">439</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTimeStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(TO_TIMESTAMP(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">) AS TEXT)&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-440"><a href="#DuckDB-440"><span class="linenos">440</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VariancePop</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;VAR_POP&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-441"><a href="#DuckDB-441"><span class="linenos">441</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WeekOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;WEEKOFYEAR&quot;</span><span class="p">),</span>
+</span><span id="DuckDB-442"><a href="#DuckDB-442"><span class="linenos">442</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">:</span> <span class="n">bool_xor_sql</span><span class="p">,</span>
+</span><span id="DuckDB-443"><a href="#DuckDB-443"><span class="linenos">443</span></a> <span class="p">}</span>
+</span><span id="DuckDB-444"><a href="#DuckDB-444"><span class="linenos">444</span></a>
+</span><span id="DuckDB-445"><a href="#DuckDB-445"><span class="linenos">445</span></a> <span class="n">SUPPORTED_JSON_PATH_PARTS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="DuckDB-446"><a href="#DuckDB-446"><span class="linenos">446</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">,</span>
+</span><span id="DuckDB-447"><a href="#DuckDB-447"><span class="linenos">447</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">,</span>
+</span><span id="DuckDB-448"><a href="#DuckDB-448"><span class="linenos">448</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">,</span>
+</span><span id="DuckDB-449"><a href="#DuckDB-449"><span class="linenos">449</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">,</span>
+</span><span id="DuckDB-450"><a href="#DuckDB-450"><span class="linenos">450</span></a> <span class="p">}</span>
+</span><span id="DuckDB-451"><a href="#DuckDB-451"><span class="linenos">451</span></a>
+</span><span id="DuckDB-452"><a href="#DuckDB-452"><span class="linenos">452</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="DuckDB-453"><a href="#DuckDB-453"><span class="linenos">453</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="p">,</span>
+</span><span id="DuckDB-454"><a href="#DuckDB-454"><span class="linenos">454</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BINARY</span><span class="p">:</span> <span class="s2">&quot;BLOB&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-455"><a href="#DuckDB-455"><span class="linenos">455</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-456"><a href="#DuckDB-456"><span class="linenos">456</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">:</span> <span class="s2">&quot;REAL&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-457"><a href="#DuckDB-457"><span class="linenos">457</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-458"><a href="#DuckDB-458"><span class="linenos">458</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-459"><a href="#DuckDB-459"><span class="linenos">459</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UINT</span><span class="p">:</span> <span class="s2">&quot;UINTEGER&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-460"><a href="#DuckDB-460"><span class="linenos">460</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">:</span> <span class="s2">&quot;BLOB&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-461"><a href="#DuckDB-461"><span class="linenos">461</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-462"><a href="#DuckDB-462"><span class="linenos">462</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_S</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP_S&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-463"><a href="#DuckDB-463"><span class="linenos">463</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_MS</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP_MS&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-464"><a href="#DuckDB-464"><span class="linenos">464</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_NS</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP_NS&quot;</span><span class="p">,</span>
+</span><span id="DuckDB-465"><a href="#DuckDB-465"><span class="linenos">465</span></a> <span class="p">}</span>
+</span><span id="DuckDB-466"><a href="#DuckDB-466"><span class="linenos">466</span></a>
+</span><span id="DuckDB-467"><a href="#DuckDB-467"><span class="linenos">467</span></a> <span class="n">STAR_MAPPING</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">STAR_MAPPING</span><span class="p">,</span> <span class="s2">&quot;except&quot;</span><span class="p">:</span> <span class="s2">&quot;EXCLUDE&quot;</span><span class="p">}</span>
+</span><span id="DuckDB-468"><a href="#DuckDB-468"><span class="linenos">468</span></a>
+</span><span id="DuckDB-469"><a href="#DuckDB-469"><span class="linenos">469</span></a> <span class="n">UNWRAPPED_INTERVAL_VALUES</span> <span class="o">=</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span>
+</span><span id="DuckDB-470"><a href="#DuckDB-470"><span class="linenos">470</span></a>
+</span><span id="DuckDB-471"><a href="#DuckDB-471"><span class="linenos">471</span></a> <span class="c1"># DuckDB doesn&#39;t generally support CREATE TABLE .. properties</span>
+</span><span id="DuckDB-472"><a href="#DuckDB-472"><span class="linenos">472</span></a> <span class="c1"># https://duckdb.org/docs/sql/statements/create_table.html</span>
+</span><span id="DuckDB-473"><a href="#DuckDB-473"><span class="linenos">473</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="DuckDB-474"><a href="#DuckDB-474"><span class="linenos">474</span></a> <span class="n">prop</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span>
+</span><span id="DuckDB-475"><a href="#DuckDB-475"><span class="linenos">475</span></a> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span>
+</span><span id="DuckDB-476"><a href="#DuckDB-476"><span class="linenos">476</span></a> <span class="p">}</span>
+</span><span id="DuckDB-477"><a href="#DuckDB-477"><span class="linenos">477</span></a>
+</span><span id="DuckDB-478"><a href="#DuckDB-478"><span class="linenos">478</span></a> <span class="c1"># There are a few exceptions (e.g. temporary tables) which are supported or</span>
+</span><span id="DuckDB-479"><a href="#DuckDB-479"><span class="linenos">479</span></a> <span class="c1"># can be transpiled to DuckDB, so we explicitly override them accordingly</span>
+</span><span id="DuckDB-480"><a href="#DuckDB-480"><span class="linenos">480</span></a> <span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span>
+</span><span id="DuckDB-481"><a href="#DuckDB-481"><span class="linenos">481</span></a> <span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</span><span class="p">]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span>
+</span><span id="DuckDB-482"><a href="#DuckDB-482"><span class="linenos">482</span></a>
+</span><span id="DuckDB-483"><a href="#DuckDB-483"><span class="linenos">483</span></a> <span class="k">def</span> <span class="nf">timefromparts_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="DuckDB-484"><a href="#DuckDB-484"><span class="linenos">484</span></a> <span class="n">nano</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nano&quot;</span><span class="p">)</span>
+</span><span id="DuckDB-485"><a href="#DuckDB-485"><span class="linenos">485</span></a> <span class="k">if</span> <span class="n">nano</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+</span><span id="DuckDB-486"><a href="#DuckDB-486"><span class="linenos">486</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span>
+</span><span id="DuckDB-487"><a href="#DuckDB-487"><span class="linenos">487</span></a> <span class="s2">&quot;sec&quot;</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;sec&quot;</span><span class="p">]</span> <span class="o">+</span> <span class="n">nano</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000000000.0</span><span class="p">)</span>
+</span><span id="DuckDB-488"><a href="#DuckDB-488"><span class="linenos">488</span></a> <span class="p">)</span>
+</span><span id="DuckDB-489"><a href="#DuckDB-489"><span class="linenos">489</span></a>
+</span><span id="DuckDB-490"><a href="#DuckDB-490"><span class="linenos">490</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_TIME&quot;</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
+</span><span id="DuckDB-491"><a href="#DuckDB-491"><span class="linenos">491</span></a>
+</span><span id="DuckDB-492"><a href="#DuckDB-492"><span class="linenos">492</span></a> <span class="k">def</span> <span class="nf">timestampfromparts_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="DuckDB-493"><a href="#DuckDB-493"><span class="linenos">493</span></a> <span class="n">sec</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;sec&quot;</span><span class="p">]</span>
+</span><span id="DuckDB-494"><a href="#DuckDB-494"><span class="linenos">494</span></a>
+</span><span id="DuckDB-495"><a href="#DuckDB-495"><span class="linenos">495</span></a> <span class="n">milli</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;milli&quot;</span><span class="p">)</span>
+</span><span id="DuckDB-496"><a href="#DuckDB-496"><span class="linenos">496</span></a> <span class="k">if</span> <span class="n">milli</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+</span><span id="DuckDB-497"><a href="#DuckDB-497"><span class="linenos">497</span></a> <span class="n">sec</span> <span class="o">+=</span> <span class="n">milli</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000.0</span><span class="p">)</span>
+</span><span id="DuckDB-498"><a href="#DuckDB-498"><span class="linenos">498</span></a>
+</span><span id="DuckDB-499"><a href="#DuckDB-499"><span class="linenos">499</span></a> <span class="n">nano</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nano&quot;</span><span class="p">)</span>
+</span><span id="DuckDB-500"><a href="#DuckDB-500"><span class="linenos">500</span></a> <span class="k">if</span> <span class="n">nano</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+</span><span id="DuckDB-501"><a href="#DuckDB-501"><span class="linenos">501</span></a> <span class="n">sec</span> <span class="o">+=</span> <span class="n">nano</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000000000.0</span><span class="p">)</span>
+</span><span id="DuckDB-502"><a href="#DuckDB-502"><span class="linenos">502</span></a>
+</span><span id="DuckDB-503"><a href="#DuckDB-503"><span class="linenos">503</span></a> <span class="k">if</span> <span class="n">milli</span> <span class="ow">or</span> <span class="n">nano</span><span class="p">:</span>
+</span><span id="DuckDB-504"><a href="#DuckDB-504"><span class="linenos">504</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;sec&quot;</span><span class="p">,</span> <span class="n">sec</span><span class="p">)</span>
+</span><span id="DuckDB-505"><a href="#DuckDB-505"><span class="linenos">505</span></a>
+</span><span id="DuckDB-506"><a href="#DuckDB-506"><span class="linenos">506</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_TIMESTAMP&quot;</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
+</span><span id="DuckDB-507"><a href="#DuckDB-507"><span class="linenos">507</span></a>
+</span><span id="DuckDB-508"><a href="#DuckDB-508"><span class="linenos">508</span></a> <span class="k">def</span> <span class="nf">tablesample_sql</span><span class="p">(</span>
+</span><span id="DuckDB-509"><a href="#DuckDB-509"><span class="linenos">509</span></a> <span class="bp">self</span><span class="p">,</span>
+</span><span id="DuckDB-510"><a href="#DuckDB-510"><span class="linenos">510</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">,</span>
+</span><span id="DuckDB-511"><a href="#DuckDB-511"><span class="linenos">511</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot; AS &quot;</span><span class="p">,</span>
+</span><span id="DuckDB-512"><a href="#DuckDB-512"><span class="linenos">512</span></a> <span class="n">tablesample_keyword</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="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
+</span><span id="DuckDB-513"><a href="#DuckDB-513"><span class="linenos">513</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="DuckDB-514"><a href="#DuckDB-514"><span class="linenos">514</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span>
+</span><span id="DuckDB-515"><a href="#DuckDB-515"><span class="linenos">515</span></a> <span class="c1"># This sample clause only applies to a single source, not the entire resulting relation</span>
+</span><span id="DuckDB-516"><a href="#DuckDB-516"><span class="linenos">516</span></a> <span class="n">tablesample_keyword</span> <span class="o">=</span> <span class="s2">&quot;TABLESAMPLE&quot;</span>
+</span><span id="DuckDB-517"><a href="#DuckDB-517"><span class="linenos">517</span></a>
+</span><span id="DuckDB-518"><a href="#DuckDB-518"><span class="linenos">518</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">tablesample_sql</span><span class="p">(</span>
+</span><span id="DuckDB-519"><a href="#DuckDB-519"><span class="linenos">519</span></a> <span class="n">expression</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span> <span class="n">tablesample_keyword</span><span class="o">=</span><span class="n">tablesample_keyword</span>
+</span><span id="DuckDB-520"><a href="#DuckDB-520"><span class="linenos">520</span></a> <span class="p">)</span>
+</span><span id="DuckDB-521"><a href="#DuckDB-521"><span class="linenos">521</span></a>
+</span><span id="DuckDB-522"><a href="#DuckDB-522"><span class="linenos">522</span></a> <span class="k">def</span> <span class="nf">interval_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="DuckDB-523"><a href="#DuckDB-523"><span class="linenos">523</span></a> <span class="n">multiplier</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="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
+</span><span id="DuckDB-524"><a href="#DuckDB-524"><span class="linenos">524</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">&quot;unit&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
+</span><span id="DuckDB-525"><a href="#DuckDB-525"><span class="linenos">525</span></a>
+</span><span id="DuckDB-526"><a href="#DuckDB-526"><span class="linenos">526</span></a> <span class="k">if</span> <span class="n">unit</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;week&quot;</span><span class="p">):</span>
+</span><span id="DuckDB-527"><a href="#DuckDB-527"><span class="linenos">527</span></a> <span class="n">multiplier</span> <span class="o">=</span> <span class="mi">7</span>
+</span><span id="DuckDB-528"><a href="#DuckDB-528"><span class="linenos">528</span></a> <span class="k">if</span> <span class="n">unit</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;quarter&quot;</span><span class="p">):</span>
+</span><span id="DuckDB-529"><a href="#DuckDB-529"><span class="linenos">529</span></a> <span class="n">multiplier</span> <span class="o">=</span> <span class="mi">90</span>
+</span><span id="DuckDB-530"><a href="#DuckDB-530"><span class="linenos">530</span></a>
+</span><span id="DuckDB-531"><a href="#DuckDB-531"><span class="linenos">531</span></a> <span class="k">if</span> <span class="n">multiplier</span><span class="p">:</span>
+</span><span id="DuckDB-532"><a href="#DuckDB-532"><span class="linenos">532</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;(</span><span class="si">{</span><span class="n">multiplier</span><span class="si">}</span><span class="s2"> * </span><span class="si">{</span><span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s1">&#39;DAY&#39;</span><span class="p">)))</span><span class="si">}</span><span class="s2">)&quot;</span>
+</span><span id="DuckDB-533"><a href="#DuckDB-533"><span class="linenos">533</span></a>
+</span><span id="DuckDB-534"><a href="#DuckDB-534"><span class="linenos">534</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
+</span><span id="DuckDB-535"><a href="#DuckDB-535"><span class="linenos">535</span></a>
+</span><span id="DuckDB-536"><a href="#DuckDB-536"><span class="linenos">536</span></a> <span class="k">def</span> <span class="nf">columndef_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot; &quot;</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="DuckDB-537"><a href="#DuckDB-537"><span class="linenos">537</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UserDefinedFunction</span><span class="p">):</span>
+</span><span id="DuckDB-538"><a href="#DuckDB-538"><span class="linenos">538</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
+</span><span id="DuckDB-539"><a href="#DuckDB-539"><span class="linenos">539</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">columndef_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sep</span><span class="p">)</span>
+</span><span id="DuckDB-540"><a href="#DuckDB-540"><span class="linenos">540</span></a>
+</span><span id="DuckDB-541"><a href="#DuckDB-541"><span class="linenos">541</span></a> <span class="k">def</span> <span class="nf">placeholder_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="DuckDB-542"><a href="#DuckDB-542"><span class="linenos">542</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;$</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">&quot;?&quot;</span>
</span></pre></div>
@@ -1691,6 +1696,8 @@ Possible values: <code>"nulls_are_small"</code>, <code>"nulls_are_large"</code>,
<dd id="DuckDB.Tokenizer.QUOTES" class="variable"><a href="../tokens.html#Tokenizer.QUOTES">QUOTES</a></dd>
<dd id="DuckDB.Tokenizer.STRING_ESCAPES" class="variable"><a href="../tokens.html#Tokenizer.STRING_ESCAPES">STRING_ESCAPES</a></dd>
<dd id="DuckDB.Tokenizer.VAR_SINGLE_TOKENS" class="variable"><a href="../tokens.html#Tokenizer.VAR_SINGLE_TOKENS">VAR_SINGLE_TOKENS</a></dd>
+ <dd id="DuckDB.Tokenizer.HEREDOC_TAG_IS_IDENTIFIER" class="variable"><a href="../tokens.html#Tokenizer.HEREDOC_TAG_IS_IDENTIFIER">HEREDOC_TAG_IS_IDENTIFIER</a></dd>
+ <dd id="DuckDB.Tokenizer.HEREDOC_STRING_ALTERNATIVE" class="variable"><a href="../tokens.html#Tokenizer.HEREDOC_STRING_ALTERNATIVE">HEREDOC_STRING_ALTERNATIVE</a></dd>
<dd id="DuckDB.Tokenizer.WHITE_SPACE" class="variable"><a href="../tokens.html#Tokenizer.WHITE_SPACE">WHITE_SPACE</a></dd>
<dd id="DuckDB.Tokenizer.COMMANDS" class="variable"><a href="../tokens.html#Tokenizer.COMMANDS">COMMANDS</a></dd>
<dd id="DuckDB.Tokenizer.COMMAND_PREFIX_TOKENS" class="variable"><a href="../tokens.html#Tokenizer.COMMAND_PREFIX_TOKENS">COMMAND_PREFIX_TOKENS</a></dd>
@@ -1888,7 +1895,7 @@ Default: 3</li>
<div class="attr variable">
<span class="name">TABLE_ALIAS_TOKENS</span> =
<input id="DuckDB.Parser.TABLE_ALIAS_TOKENS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
- <label class="view-value-button pdoc-button" for="DuckDB.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{&lt;TokenType.NULL: &#39;NULL&#39;&gt;, &lt;TokenType.INT4RANGE: &#39;INT4RANGE&#39;&gt;, &lt;TokenType.XML: &#39;XML&#39;&gt;, &lt;TokenType.MEDIUMBLOB: &#39;MEDIUMBLOB&#39;&gt;, &lt;TokenType.END: &#39;END&#39;&gt;, &lt;TokenType.DESCRIBE: &#39;DESCRIBE&#39;&gt;, &lt;TokenType.LOAD: &#39;LOAD&#39;&gt;, &lt;TokenType.TSTZRANGE: &#39;TSTZRANGE&#39;&gt;, &lt;TokenType.DATERANGE: &#39;DATERANGE&#39;&gt;, &lt;TokenType.MEDIUMTEXT: &#39;MEDIUMTEXT&#39;&gt;, &lt;TokenType.IPV4: &#39;IPV4&#39;&gt;, &lt;TokenType.ROWS: &#39;ROWS&#39;&gt;, &lt;TokenType.ARRAY: &#39;ARRAY&#39;&gt;, &lt;TokenType.INT128: &#39;INT128&#39;&gt;, &lt;TokenType.SHOW: &#39;SHOW&#39;&gt;, &lt;TokenType.SMALLINT: &#39;SMALLINT&#39;&gt;, &lt;TokenType.TSMULTIRANGE: &#39;TSMULTIRANGE&#39;&gt;, &lt;TokenType.TIMESTAMPTZ: &#39;TIMESTAMPTZ&#39;&gt;, &lt;TokenType.FALSE: &#39;FALSE&#39;&gt;, &lt;TokenType.MODEL: &#39;MODEL&#39;&gt;, &lt;TokenType.PERCENT: &#39;PERCENT&#39;&gt;, &lt;TokenType.PARTITION: &#39;PARTITION&#39;&gt;, &lt;TokenType.TIMESTAMP: &#39;TIMESTAMP&#39;&gt;, &lt;TokenType.INT8MULTIRANGE: &#39;INT8MULTIRANGE&#39;&gt;, &lt;TokenType.FORMAT: &#39;FORMAT&#39;&gt;, &lt;TokenType.ENUM8: &#39;ENUM8&#39;&gt;, &lt;TokenType.MAP: &#39;MAP&#39;&gt;, &lt;TokenType.BIGDECIMAL: &#39;BIGDECIMAL&#39;&gt;, &lt;TokenType.TABLE: &#39;TABLE&#39;&gt;, &lt;TokenType.TEXT: &#39;TEXT&#39;&gt;, &lt;TokenType.DICTIONARY: &#39;DICTIONARY&#39;&gt;, &lt;TokenType.IPADDRESS: &#39;IPADDRESS&#39;&gt;, &lt;TokenType.CURRENT_DATETIME: &#39;CURRENT_DATETIME&#39;&gt;, &lt;TokenType.GEOGRAPHY: &#39;GEOGRAPHY&#39;&gt;, &lt;TokenType.UPDATE: &#39;UPDATE&#39;&gt;, &lt;TokenType.MEDIUMINT: &#39;MEDIUMINT&#39;&gt;, &lt;TokenType.REPLACE: &#39;REPLACE&#39;&gt;, &lt;TokenType.EXISTS: &#39;EXISTS&#39;&gt;, &lt;TokenType.BINARY: &#39;BINARY&#39;&gt;, &lt;TokenType.INT8RANGE: &#39;INT8RANGE&#39;&gt;, &lt;TokenType.TIMESTAMPLTZ: &#39;TIMESTAMPLTZ&#39;&gt;, &lt;TokenType.USMALLINT: &#39;USMALLINT&#39;&gt;, &lt;TokenType.COMMIT: &#39;COMMIT&#39;&gt;, &lt;TokenType.SERIAL: &#39;SERIAL&#39;&gt;, &lt;TokenType.SET: &#39;SET&#39;&gt;, &lt;TokenType.VARCHAR: &#39;VARCHAR&#39;&gt;, &lt;TokenType.USERDEFINED: &#39;USERDEFINED&#39;&gt;, &lt;TokenType.OPERATOR: &#39;OPERATOR&#39;&gt;, &lt;TokenType.OVERLAPS: &#39;OVERLAPS&#39;&gt;, &lt;TokenType.IMAGE: &#39;IMAGE&#39;&gt;, &lt;TokenType.SETTINGS: &#39;SETTINGS&#39;&gt;, &lt;TokenType.NEXT: &#39;NEXT&#39;&gt;, &lt;TokenType.UMEDIUMINT: &#39;UMEDIUMINT&#39;&gt;, &lt;TokenType.TSTZMULTIRANGE: &#39;TSTZMULTIRANGE&#39;&gt;, &lt;TokenType.FILTER: &#39;FILTER&#39;&gt;, &lt;TokenType.TIME: &#39;TIME&#39;&gt;, &lt;TokenType.OBJECT_IDENTIFIER: &#39;OBJECT_IDENTIFIER&#39;&gt;, &lt;TokenType.ORDINALITY: &#39;ORDINALITY&#39;&gt;, &lt;TokenType.ESCAPE: &#39;ESCAPE&#39;&gt;, &lt;TokenType.TIMETZ: &#39;TIMETZ&#39;&gt;, &lt;TokenType.BIGSERIAL: &#39;BIGSERIAL&#39;&gt;, &lt;TokenType.UINT256: &#39;UINT256&#39;&gt;, &lt;TokenType.DATE32: &#39;DATE32&#39;&gt;, &lt;TokenType.COMMAND: &#39;COMMAND&#39;&gt;, &lt;TokenType.BOOLEAN: &#39;BOOLEAN&#39;&gt;, &lt;TokenType.UNIQUE: &#39;UNIQUE&#39;&gt;, &lt;TokenType.COLUMN: &#39;COLUMN&#39;&gt;, &lt;TokenType.GEOMETRY: &#39;GEOMETRY&#39;&gt;, &lt;TokenType.INET: &#39;INET&#39;&gt;, &lt;TokenType.DESC: &#39;DESC&#39;&gt;, &lt;TokenType.NESTED: &#39;NESTED&#39;&gt;, &lt;TokenType.REFERENCES: &#39;REFERENCES&#39;&gt;, &lt;TokenType.FIXEDSTRING: &#39;FIXEDSTRING&#39;&gt;, &lt;TokenType.CURRENT_TIME: &#39;CURRENT_TIME&#39;&gt;, &lt;TokenType.BPCHAR: &#39;BPCHAR&#39;&gt;, &lt;TokenType.ALL: &#39;ALL&#39;&gt;, &lt;TokenType.VOLATILE: &#39;VOLATILE&#39;&gt;, &lt;TokenType.NUMMULTIRANGE: &#39;NUMMULTIRANGE&#39;&gt;, &lt;TokenType.UUID: &#39;UUID&#39;&gt;, &lt;TokenType.TIMESTAMP_S: &#39;TIMESTAMP_S&#39;&gt;, &lt;TokenType.SCHEMA: &#39;SCHEMA&#39;&gt;, &lt;TokenType.COMMENT: &#39;COMMENT&#39;&gt;, &lt;TokenType.LONGTEXT: &#39;LONGTEXT&#39;&gt;, &lt;TokenType.SMALLSERIAL: &#39;SMALLSERIAL&#39;&gt;, &lt;TokenType.RANGE: &#39;RANGE&#39;&gt;, &lt;TokenType.CURRENT_TIMESTAMP: &#39;CURRENT_TIMESTAMP&#39;&gt;, &lt;TokenType.CURRENT_DATE: &#39;CURRENT_DATE&#39;&gt;, &lt;TokenType.IPV6: &#39;IPV6&#39;&gt;, &lt;TokenType.TSRANGE: &#39;TSRANGE&#39;&gt;, &lt;TokenType.FLOAT: &#39;FLOAT&#39;&gt;, &lt;TokenType.SIMPLEAGGREGATEFUNCTION: &#39;SIMPLEAGGREGATEFUNCTION&#39;&gt;, &lt;TokenType.KEEP: &#39;KEEP&#39;&gt;, &lt;TokenType.BEGIN: &#39;BEGIN&#39;&gt;, &lt;TokenType.OBJECT: &#39;OBJECT&#39;&gt;, &lt;TokenType.PROCEDURE: &#39;PROCEDURE&#39;&gt;, &lt;TokenType.CURRENT_USER: &#39;CURRENT_USER&#39;&gt;, &lt;TokenType.FOREIGN_KEY: &#39;FOREIGN_KEY&#39;&gt;, &lt;TokenType.UTINYINT: &#39;UTINYINT&#39;&gt;, &lt;TokenType.ENUM16: &#39;ENUM16&#39;&gt;, &lt;TokenType.DELETE: &#39;DELETE&#39;&gt;, &lt;TokenType.LOWCARDINALITY: &#39;LOWCARDINALITY&#39;&gt;, &lt;TokenType.ROW: &#39;ROW&#39;&gt;, &lt;TokenType.MONEY: &#39;MONEY&#39;&gt;, &lt;TokenType.INT4MULTIRANGE: &#39;INT4MULTIRANGE&#39;&gt;, &lt;TokenType.CONSTRAINT: &#39;CONSTRAINT&#39;&gt;, &lt;TokenType.BIGINT: &#39;BIGINT&#39;&gt;, &lt;TokenType.TEMPORARY: &#39;TEMPORARY&#39;&gt;, &lt;TokenType.BIT: &#39;BIT&#39;&gt;, &lt;TokenType.PRAGMA: &#39;PRAGMA&#39;&gt;, &lt;TokenType.DATE: &#39;DATE&#39;&gt;, &lt;TokenType.RECURSIVE: &#39;RECURSIVE&#39;&gt;, &lt;TokenType.EXECUTE: &#39;EXECUTE&#39;&gt;, &lt;TokenType.VAR: &#39;VAR&#39;&gt;, &lt;TokenType.SUPER: &#39;SUPER&#39;&gt;, &lt;TokenType.HSTORE: &#39;HSTORE&#39;&gt;, &lt;TokenType.INT256: &#39;INT256&#39;&gt;, &lt;TokenType.DATETIME: &#39;DATETIME&#39;&gt;, &lt;TokenType.TINYBLOB: &#39;TINYBLOB&#39;&gt;, &lt;TokenType.DATETIME64: &#39;DATETIME64&#39;&gt;, &lt;TokenType.PSEUDO_TYPE: &#39;PSEUDO_TYPE&#39;&gt;, &lt;TokenType.TRUE: &#39;TRUE&#39;&gt;, &lt;TokenType.SOME: &#39;SOME&#39;&gt;, &lt;TokenType.UINT: &#39;UINT&#39;&gt;, &lt;TokenType.UINT128: &#39;UINT128&#39;&gt;, &lt;TokenType.ROWVERSION: &#39;ROWVERSION&#39;&gt;, &lt;TokenType.DEFAULT: &#39;DEFAULT&#39;&gt;, &lt;TokenType.CASE: &#39;CASE&#39;&gt;, &lt;TokenType.IS: &#39;IS&#39;&gt;, &lt;TokenType.INT: &#39;INT&#39;&gt;, &lt;TokenType.PIVOT: &#39;PIVOT&#39;&gt;, &lt;TokenType.MERGE: &#39;MERGE&#39;&gt;, &lt;TokenType.TIMESTAMP_MS: &#39;TIMESTAMP_MS&#39;&gt;, &lt;TokenType.FINAL: &#39;FINAL&#39;&gt;, &lt;TokenType.OVERWRITE: &#39;OVERWRITE&#39;&gt;, &lt;TokenType.DATABASE: &#39;DATABASE&#39;&gt;, &lt;TokenType.JSON: &#39;JSON&#39;&gt;, &lt;TokenType.JSONB: &#39;JSONB&#39;&gt;, &lt;TokenType.NCHAR: &#39;NCHAR&#39;&gt;, &lt;TokenType.TIMESTAMP_NS: &#39;TIMESTAMP_NS&#39;&gt;, &lt;TokenType.INDEX: &#39;INDEX&#39;&gt;, &lt;TokenType.NUMRANGE: &#39;NUMRANGE&#39;&gt;, &lt;TokenType.HLLSKETCH: &#39;HLLSKETCH&#39;&gt;, &lt;TokenType.INTERVAL: &#39;INTERVAL&#39;&gt;, &lt;TokenType.DATEMULTIRANGE: &#39;DATEMULTIRANGE&#39;&gt;, &lt;TokenType.UBIGINT: &#39;UBIGINT&#39;&gt;, &lt;TokenType.VARIANT: &#39;VARIANT&#39;&gt;, &lt;TokenType.AUTO_INCREMENT: &#39;AUTO_INCREMENT&#39;&gt;, &lt;TokenType.UNIQUEIDENTIFIER: &#39;UNIQUEIDENTIFIER&#39;&gt;, &lt;TokenType.STRUCT: &#39;STRUCT&#39;&gt;, &lt;TokenType.UNPIVOT: &#39;UNPIVOT&#39;&gt;, &lt;TokenType.USE: &#39;USE&#39;&gt;, &lt;TokenType.ISNULL: &#39;ISNULL&#39;&gt;, &lt;TokenType.VARBINARY: &#39;VARBINARY&#39;&gt;, &lt;TokenType.SMALLMONEY: &#39;SMALLMONEY&#39;&gt;, &lt;TokenType.TINYTEXT: &#39;TINYTEXT&#39;&gt;, &lt;TokenType.ASC: &#39;ASC&#39;&gt;, &lt;TokenType.IPPREFIX: &#39;IPPREFIX&#39;&gt;, &lt;TokenType.UDECIMAL: &#39;UDECIMAL&#39;&gt;, &lt;TokenType.TINYINT: &#39;TINYINT&#39;&gt;, &lt;TokenType.KILL: &#39;KILL&#39;&gt;, &lt;TokenType.CACHE: &#39;CACHE&#39;&gt;, &lt;TokenType.ANY: &#39;ANY&#39;&gt;, &lt;TokenType.YEAR: &#39;YEAR&#39;&gt;, &lt;TokenType.VIEW: &#39;VIEW&#39;&gt;, &lt;TokenType.FIRST: &#39;FIRST&#39;&gt;, &lt;TokenType.AGGREGATEFUNCTION: &#39;AGGREGATEFUNCTION&#39;&gt;, &lt;TokenType.REFRESH: &#39;REFRESH&#39;&gt;, &lt;TokenType.DIV: &#39;DIV&#39;&gt;, &lt;TokenType.DECIMAL: &#39;DECIMAL&#39;&gt;, &lt;TokenType.NULLABLE: &#39;NULLABLE&#39;&gt;, &lt;TokenType.ENUM: &#39;ENUM&#39;&gt;, &lt;TokenType.TOP: &#39;TOP&#39;&gt;, &lt;TokenType.CHAR: &#39;CHAR&#39;&gt;, &lt;TokenType.NVARCHAR: &#39;NVARCHAR&#39;&gt;, &lt;TokenType.COLLATE: &#39;COLLATE&#39;&gt;, &lt;TokenType.UNKNOWN: &#39;UNKNOWN&#39;&gt;, &lt;TokenType.LONGBLOB: &#39;LONGBLOB&#39;&gt;, &lt;TokenType.DOUBLE: &#39;DOUBLE&#39;&gt;, &lt;TokenType.FUNCTION: &#39;FUNCTION&#39;&gt;}</span>
+ <label class="view-value-button pdoc-button" for="DuckDB.Parser.TABLE_ALIAS_TOKENS-view-value"></label><span class="default_value">{&lt;TokenType.TEXT: &#39;TEXT&#39;&gt;, &lt;TokenType.RECURSIVE: &#39;RECURSIVE&#39;&gt;, &lt;TokenType.AGGREGATEFUNCTION: &#39;AGGREGATEFUNCTION&#39;&gt;, &lt;TokenType.CONSTRAINT: &#39;CONSTRAINT&#39;&gt;, &lt;TokenType.OVERLAPS: &#39;OVERLAPS&#39;&gt;, &lt;TokenType.PROCEDURE: &#39;PROCEDURE&#39;&gt;, &lt;TokenType.VOLATILE: &#39;VOLATILE&#39;&gt;, &lt;TokenType.ORDINALITY: &#39;ORDINALITY&#39;&gt;, &lt;TokenType.MONEY: &#39;MONEY&#39;&gt;, &lt;TokenType.INT4RANGE: &#39;INT4RANGE&#39;&gt;, &lt;TokenType.MEDIUMBLOB: &#39;MEDIUMBLOB&#39;&gt;, &lt;TokenType.INTERVAL: &#39;INTERVAL&#39;&gt;, &lt;TokenType.DATEMULTIRANGE: &#39;DATEMULTIRANGE&#39;&gt;, &lt;TokenType.DATABASE: &#39;DATABASE&#39;&gt;, &lt;TokenType.INT256: &#39;INT256&#39;&gt;, &lt;TokenType.TIMESTAMPLTZ: &#39;TIMESTAMPLTZ&#39;&gt;, &lt;TokenType.CURRENT_USER: &#39;CURRENT_USER&#39;&gt;, &lt;TokenType.IPV6: &#39;IPV6&#39;&gt;, &lt;TokenType.FINAL: &#39;FINAL&#39;&gt;, &lt;TokenType.UNIQUE: &#39;UNIQUE&#39;&gt;, &lt;TokenType.FOREIGN_KEY: &#39;FOREIGN_KEY&#39;&gt;, &lt;TokenType.UUID: &#39;UUID&#39;&gt;, &lt;TokenType.VARIANT: &#39;VARIANT&#39;&gt;, &lt;TokenType.END: &#39;END&#39;&gt;, &lt;TokenType.MEDIUMINT: &#39;MEDIUMINT&#39;&gt;, &lt;TokenType.ENUM8: &#39;ENUM8&#39;&gt;, &lt;TokenType.UPDATE: &#39;UPDATE&#39;&gt;, &lt;TokenType.NUMMULTIRANGE: &#39;NUMMULTIRANGE&#39;&gt;, &lt;TokenType.PERCENT: &#39;PERCENT&#39;&gt;, &lt;TokenType.ROWVERSION: &#39;ROWVERSION&#39;&gt;, &lt;TokenType.BIGDECIMAL: &#39;BIGDECIMAL&#39;&gt;, &lt;TokenType.NCHAR: &#39;NCHAR&#39;&gt;, &lt;TokenType.KILL: &#39;KILL&#39;&gt;, &lt;TokenType.ANY: &#39;ANY&#39;&gt;, &lt;TokenType.INT: &#39;INT&#39;&gt;, &lt;TokenType.DATETIME64: &#39;DATETIME64&#39;&gt;, &lt;TokenType.VARBINARY: &#39;VARBINARY&#39;&gt;, &lt;TokenType.REPLACE: &#39;REPLACE&#39;&gt;, &lt;TokenType.CASE: &#39;CASE&#39;&gt;, &lt;TokenType.MEDIUMTEXT: &#39;MEDIUMTEXT&#39;&gt;, &lt;TokenType.SOME: &#39;SOME&#39;&gt;, &lt;TokenType.SHOW: &#39;SHOW&#39;&gt;, &lt;TokenType.TIMETZ: &#39;TIMETZ&#39;&gt;, &lt;TokenType.ESCAPE: &#39;ESCAPE&#39;&gt;, &lt;TokenType.CHAR: &#39;CHAR&#39;&gt;, &lt;TokenType.TIMESTAMP: &#39;TIMESTAMP&#39;&gt;, &lt;TokenType.TIMESTAMPTZ: &#39;TIMESTAMPTZ&#39;&gt;, &lt;TokenType.VIEW: &#39;VIEW&#39;&gt;, &lt;TokenType.INT128: &#39;INT128&#39;&gt;, &lt;TokenType.STRUCT: &#39;STRUCT&#39;&gt;, &lt;TokenType.UMEDIUMINT: &#39;UMEDIUMINT&#39;&gt;, &lt;TokenType.TIMESTAMP_NS: &#39;TIMESTAMP_NS&#39;&gt;, &lt;TokenType.TINYTEXT: &#39;TINYTEXT&#39;&gt;, &lt;TokenType.UINT: &#39;UINT&#39;&gt;, &lt;TokenType.NULLABLE: &#39;NULLABLE&#39;&gt;, &lt;TokenType.REFERENCES: &#39;REFERENCES&#39;&gt;, &lt;TokenType.CURRENT_DATE: &#39;CURRENT_DATE&#39;&gt;, &lt;TokenType.TSMULTIRANGE: &#39;TSMULTIRANGE&#39;&gt;, &lt;TokenType.OPERATOR: &#39;OPERATOR&#39;&gt;, &lt;TokenType.DATETIME: &#39;DATETIME&#39;&gt;, &lt;TokenType.LONGTEXT: &#39;LONGTEXT&#39;&gt;, &lt;TokenType.ROW: &#39;ROW&#39;&gt;, &lt;TokenType.DELETE: &#39;DELETE&#39;&gt;, &lt;TokenType.UINT128: &#39;UINT128&#39;&gt;, &lt;TokenType.DATE32: &#39;DATE32&#39;&gt;, &lt;TokenType.BOOLEAN: &#39;BOOLEAN&#39;&gt;, &lt;TokenType.LOWCARDINALITY: &#39;LOWCARDINALITY&#39;&gt;, &lt;TokenType.DESC: &#39;DESC&#39;&gt;, &lt;TokenType.VAR: &#39;VAR&#39;&gt;, &lt;TokenType.GEOGRAPHY: &#39;GEOGRAPHY&#39;&gt;, &lt;TokenType.CURRENT_TIMESTAMP: &#39;CURRENT_TIMESTAMP&#39;&gt;, &lt;TokenType.TIME: &#39;TIME&#39;&gt;, &lt;TokenType.RANGE: &#39;RANGE&#39;&gt;, &lt;TokenType.DECIMAL: &#39;DECIMAL&#39;&gt;, &lt;TokenType.UNKNOWN: &#39;UNKNOWN&#39;&gt;, &lt;TokenType.DATE: &#39;DATE&#39;&gt;, &lt;TokenType.UNIQUEIDENTIFIER: &#39;UNIQUEIDENTIFIER&#39;&gt;, &lt;TokenType.ROWS: &#39;ROWS&#39;&gt;, &lt;TokenType.MAP: &#39;MAP&#39;&gt;, &lt;TokenType.PSEUDO_TYPE: &#39;PSEUDO_TYPE&#39;&gt;, &lt;TokenType.INT8MULTIRANGE: &#39;INT8MULTIRANGE&#39;&gt;, &lt;TokenType.USERDEFINED: &#39;USERDEFINED&#39;&gt;, &lt;TokenType.ENUM16: &#39;ENUM16&#39;&gt;, &lt;TokenType.NVARCHAR: &#39;NVARCHAR&#39;&gt;, &lt;TokenType.COMMENT: &#39;COMMENT&#39;&gt;, &lt;TokenType.REFRESH: &#39;REFRESH&#39;&gt;, &lt;TokenType.BEGIN: &#39;BEGIN&#39;&gt;, &lt;TokenType.ISNULL: &#39;ISNULL&#39;&gt;, &lt;TokenType.EXECUTE: &#39;EXECUTE&#39;&gt;, &lt;TokenType.CACHE: &#39;CACHE&#39;&gt;, &lt;TokenType.TEMPORARY: &#39;TEMPORARY&#39;&gt;, &lt;TokenType.SCHEMA: &#39;SCHEMA&#39;&gt;, &lt;TokenType.DEFAULT: &#39;DEFAULT&#39;&gt;, &lt;TokenType.FILTER: &#39;FILTER&#39;&gt;, &lt;TokenType.TSRANGE: &#39;TSRANGE&#39;&gt;, &lt;TokenType.UBIGINT: &#39;UBIGINT&#39;&gt;, &lt;TokenType.HLLSKETCH: &#39;HLLSKETCH&#39;&gt;, &lt;TokenType.IS: &#39;IS&#39;&gt;, &lt;TokenType.UDECIMAL: &#39;UDECIMAL&#39;&gt;, &lt;TokenType.NULL: &#39;NULL&#39;&gt;, &lt;TokenType.YEAR: &#39;YEAR&#39;&gt;, &lt;TokenType.MERGE: &#39;MERGE&#39;&gt;, &lt;TokenType.PIVOT: &#39;PIVOT&#39;&gt;, &lt;TokenType.AUTO_INCREMENT: &#39;AUTO_INCREMENT&#39;&gt;, &lt;TokenType.GEOMETRY: &#39;GEOMETRY&#39;&gt;, &lt;TokenType.SMALLINT: &#39;SMALLINT&#39;&gt;, &lt;TokenType.TSTZRANGE: &#39;TSTZRANGE&#39;&gt;, &lt;TokenType.SMALLMONEY: &#39;SMALLMONEY&#39;&gt;, &lt;TokenType.IPADDRESS: &#39;IPADDRESS&#39;&gt;, &lt;TokenType.PARTITION: &#39;PARTITION&#39;&gt;, &lt;TokenType.TOP: &#39;TOP&#39;&gt;, &lt;TokenType.INET: &#39;INET&#39;&gt;, &lt;TokenType.MODEL: &#39;MODEL&#39;&gt;, &lt;TokenType.DICTIONARY: &#39;DICTIONARY&#39;&gt;, &lt;TokenType.USMALLINT: &#39;USMALLINT&#39;&gt;, &lt;TokenType.TIMESTAMP_S: &#39;TIMESTAMP_S&#39;&gt;, &lt;TokenType.OBJECT: &#39;OBJECT&#39;&gt;, &lt;TokenType.BIGSERIAL: &#39;BIGSERIAL&#39;&gt;, &lt;TokenType.ENUM: &#39;ENUM&#39;&gt;, &lt;TokenType.COMMAND: &#39;COMMAND&#39;&gt;, &lt;TokenType.ASC: &#39;ASC&#39;&gt;, &lt;TokenType.NUMRANGE: &#39;NUMRANGE&#39;&gt;, &lt;TokenType.INDEX: &#39;INDEX&#39;&gt;, &lt;TokenType.FORMAT: &#39;FORMAT&#39;&gt;, &lt;TokenType.SERIAL: &#39;SERIAL&#39;&gt;, &lt;TokenType.BIGINT: &#39;BIGINT&#39;&gt;, &lt;TokenType.OBJECT_IDENTIFIER: &#39;OBJECT_IDENTIFIER&#39;&gt;, &lt;TokenType.FIRST: &#39;FIRST&#39;&gt;, &lt;TokenType.SETTINGS: &#39;SETTINGS&#39;&gt;, &lt;TokenType.INT8RANGE: &#39;INT8RANGE&#39;&gt;, &lt;TokenType.TIMESTAMP_MS: &#39;TIMESTAMP_MS&#39;&gt;, &lt;TokenType.LONGBLOB: &#39;LONGBLOB&#39;&gt;, &lt;TokenType.VARCHAR: &#39;VARCHAR&#39;&gt;, &lt;TokenType.PRAGMA: &#39;PRAGMA&#39;&gt;, &lt;TokenType.IPV4: &#39;IPV4&#39;&gt;, &lt;TokenType.COLUMN: &#39;COLUMN&#39;&gt;, &lt;TokenType.BIT: &#39;BIT&#39;&gt;, &lt;TokenType.XML: &#39;XML&#39;&gt;, &lt;TokenType.BPCHAR: &#39;BPCHAR&#39;&gt;, &lt;TokenType.SIMPLEAGGREGATEFUNCTION: &#39;SIMPLEAGGREGATEFUNCTION&#39;&gt;, &lt;TokenType.IPPREFIX: &#39;IPPREFIX&#39;&gt;, &lt;TokenType.COLLATE: &#39;COLLATE&#39;&gt;, &lt;TokenType.TSTZMULTIRANGE: &#39;TSTZMULTIRANGE&#39;&gt;, &lt;TokenType.DESCRIBE: &#39;DESCRIBE&#39;&gt;, &lt;TokenType.NESTED: &#39;NESTED&#39;&gt;, &lt;TokenType.CURRENT_DATETIME: &#39;CURRENT_DATETIME&#39;&gt;, &lt;TokenType.TINYBLOB: &#39;TINYBLOB&#39;&gt;, &lt;TokenType.FLOAT: &#39;FLOAT&#39;&gt;, &lt;TokenType.NEXT: &#39;NEXT&#39;&gt;, &lt;TokenType.HSTORE: &#39;HSTORE&#39;&gt;, &lt;TokenType.UNPIVOT: &#39;UNPIVOT&#39;&gt;, &lt;TokenType.LOAD: &#39;LOAD&#39;&gt;, &lt;TokenType.TRUE: &#39;TRUE&#39;&gt;, &lt;TokenType.DIV: &#39;DIV&#39;&gt;, &lt;TokenType.FALSE: &#39;FALSE&#39;&gt;, &lt;TokenType.COMMIT: &#39;COMMIT&#39;&gt;, &lt;TokenType.ALL: &#39;ALL&#39;&gt;, &lt;TokenType.IMAGE: &#39;IMAGE&#39;&gt;, &lt;TokenType.FUNCTION: &#39;FUNCTION&#39;&gt;, &lt;TokenType.INT4MULTIRANGE: &#39;INT4MULTIRANGE&#39;&gt;, &lt;TokenType.SUPER: &#39;SUPER&#39;&gt;, &lt;TokenType.ARRAY: &#39;ARRAY&#39;&gt;, &lt;TokenType.SET: &#39;SET&#39;&gt;, &lt;TokenType.UINT256: &#39;UINT256&#39;&gt;, &lt;TokenType.FIXEDSTRING: &#39;FIXEDSTRING&#39;&gt;, &lt;TokenType.KEEP: &#39;KEEP&#39;&gt;, &lt;TokenType.JSONB: &#39;JSONB&#39;&gt;, &lt;TokenType.EXISTS: &#39;EXISTS&#39;&gt;, &lt;TokenType.TABLE: &#39;TABLE&#39;&gt;, &lt;TokenType.TINYINT: &#39;TINYINT&#39;&gt;, &lt;TokenType.DOUBLE: &#39;DOUBLE&#39;&gt;, &lt;TokenType.USE: &#39;USE&#39;&gt;, &lt;TokenType.BINARY: &#39;BINARY&#39;&gt;, &lt;TokenType.DATERANGE: &#39;DATERANGE&#39;&gt;, &lt;TokenType.JSON: &#39;JSON&#39;&gt;, &lt;TokenType.CURRENT_TIME: &#39;CURRENT_TIME&#39;&gt;, &lt;TokenType.UTINYINT: &#39;UTINYINT&#39;&gt;, &lt;TokenType.OVERWRITE: &#39;OVERWRITE&#39;&gt;, &lt;TokenType.SMALLSERIAL: &#39;SMALLSERIAL&#39;&gt;}</span>
</div>
@@ -2064,211 +2071,212 @@ Default: 3</li>
</span><span id="DuckDB.Generator-334"><a href="#DuckDB.Generator-334"><span class="linenos">334</span></a> <span class="n">IGNORE_NULLS_IN_FUNC</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="DuckDB.Generator-335"><a href="#DuckDB.Generator-335"><span class="linenos">335</span></a> <span class="n">JSON_PATH_BRACKETED_KEY_SUPPORTED</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="DuckDB.Generator-336"><a href="#DuckDB.Generator-336"><span class="linenos">336</span></a> <span class="n">SUPPORTS_CREATE_TABLE_LIKE</span> <span class="o">=</span> <span class="kc">False</span>
-</span><span id="DuckDB.Generator-337"><a href="#DuckDB.Generator-337"><span class="linenos">337</span></a>
-</span><span id="DuckDB.Generator-338"><a href="#DuckDB.Generator-338"><span class="linenos">338</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="DuckDB.Generator-339"><a href="#DuckDB.Generator-339"><span class="linenos">339</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-340"><a href="#DuckDB.Generator-340"><span class="linenos">340</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">approx_count_distinct_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-341"><a href="#DuckDB.Generator-341"><span class="linenos">341</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="p">(</span>
-</span><span id="DuckDB.Generator-342"><a href="#DuckDB.Generator-342"><span class="linenos">342</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;ARRAY&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
-</span><span id="DuckDB.Generator-343"><a href="#DuckDB.Generator-343"><span class="linenos">343</span></a> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span> <span class="ow">and</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span>
-</span><span id="DuckDB.Generator-344"><a href="#DuckDB.Generator-344"><span class="linenos">344</span></a> <span class="k">else</span> <span class="n">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span>
-</span><span id="DuckDB.Generator-345"><a href="#DuckDB.Generator-345"><span class="linenos">345</span></a> <span class="p">),</span>
-</span><span id="DuckDB.Generator-346"><a href="#DuckDB.Generator-346"><span class="linenos">346</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySize</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ARRAY_LENGTH&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-347"><a href="#DuckDB.Generator-347"><span class="linenos">347</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span><span class="p">:</span> <span class="n">arg_max_or_min_no_count</span><span class="p">(</span><span class="s2">&quot;ARG_MAX&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-348"><a href="#DuckDB.Generator-348"><span class="linenos">348</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">:</span> <span class="n">arg_max_or_min_no_count</span><span class="p">(</span><span class="s2">&quot;ARG_MIN&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-349"><a href="#DuckDB.Generator-349"><span class="linenos">349</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySort</span><span class="p">:</span> <span class="n">_array_sort_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-350"><a href="#DuckDB.Generator-350"><span class="linenos">350</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;LIST_SUM&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-351"><a href="#DuckDB.Generator-351"><span class="linenos">351</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;XOR&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-352"><a href="#DuckDB.Generator-352"><span class="linenos">352</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">:</span> <span class="n">no_comment_column_constraint_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-353"><a href="#DuckDB.Generator-353"><span class="linenos">353</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">&quot;CURRENT_DATE&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-354"><a href="#DuckDB.Generator-354"><span class="linenos">354</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTime</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">&quot;CURRENT_TIME&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-355"><a href="#DuckDB.Generator-355"><span class="linenos">355</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">&quot;CURRENT_TIMESTAMP&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-356"><a href="#DuckDB.Generator-356"><span class="linenos">356</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfMonth</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAYOFMONTH&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-357"><a href="#DuckDB.Generator-357"><span class="linenos">357</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAYOFWEEK&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-358"><a href="#DuckDB.Generator-358"><span class="linenos">358</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAYOFYEAR&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-359"><a href="#DuckDB.Generator-359"><span class="linenos">359</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-360"><a href="#DuckDB.Generator-360"><span class="linenos">360</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Date</span><span class="p">:</span> <span class="n">_date_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-361"><a href="#DuckDB.Generator-361"><span class="linenos">361</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-362"><a href="#DuckDB.Generator-362"><span class="linenos">362</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_DATE&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-363"><a href="#DuckDB.Generator-363"><span class="linenos">363</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-364"><a href="#DuckDB.Generator-364"><span class="linenos">364</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
-</span><span id="DuckDB.Generator-365"><a href="#DuckDB.Generator-365"><span class="linenos">365</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;&#39;</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;unit&#39;</span><span class="p">)</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">&#39;DAY&#39;</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span>
-</span><span id="DuckDB.Generator-366"><a href="#DuckDB.Generator-366"><span class="linenos">366</span></a> <span class="p">),</span>
-</span><span id="DuckDB.Generator-367"><a href="#DuckDB.Generator-367"><span class="linenos">367</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">:</span> <span class="n">datestrtodate_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-368"><a href="#DuckDB.Generator-368"><span class="linenos">368</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateToDi</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-369"><a href="#DuckDB.Generator-369"><span class="linenos">369</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(STRFTIME(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">DATEINT_FORMAT</span><span class="si">}</span><span class="s2">) AS INT)&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-370"><a href="#DuckDB.Generator-370"><span class="linenos">370</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Decode</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="n">encode_decode_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="s2">&quot;DECODE&quot;</span><span class="p">,</span> <span class="n">replace</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-371"><a href="#DuckDB.Generator-371"><span class="linenos">371</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DiToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-372"><a href="#DuckDB.Generator-372"><span class="linenos">372</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(STRPTIME(CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">DATEINT_FORMAT</span><span class="si">}</span><span class="s2">) AS DATE)&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-373"><a href="#DuckDB.Generator-373"><span class="linenos">373</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Encode</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="n">encode_decode_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="s2">&quot;ENCODE&quot;</span><span class="p">,</span> <span class="n">replace</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-374"><a href="#DuckDB.Generator-374"><span class="linenos">374</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;UNNEST&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-375"><a href="#DuckDB.Generator-375"><span class="linenos">375</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;//&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-376"><a href="#DuckDB.Generator-376"><span class="linenos">376</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsInf</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ISINF&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-377"><a href="#DuckDB.Generator-377"><span class="linenos">377</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsNan</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ISNAN&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-378"><a href="#DuckDB.Generator-378"><span class="linenos">378</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-379"><a href="#DuckDB.Generator-379"><span class="linenos">379</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-380"><a href="#DuckDB.Generator-380"><span class="linenos">380</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONFormat</span><span class="p">:</span> <span class="n">_json_format_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-381"><a href="#DuckDB.Generator-381"><span class="linenos">381</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalOr</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;BOOL_OR&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-382"><a href="#DuckDB.Generator-382"><span class="linenos">382</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalAnd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;BOOL_AND&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-383"><a href="#DuckDB.Generator-383"><span class="linenos">383</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MonthsBetween</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
-</span><span id="DuckDB.Generator-384"><a href="#DuckDB.Generator-384"><span class="linenos">384</span></a> <span class="s2">&quot;DATEDIFF&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-385"><a href="#DuckDB.Generator-385"><span class="linenos">385</span></a> <span class="s2">&quot;&#39;month&#39;&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-386"><a href="#DuckDB.Generator-386"><span class="linenos">386</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;timestamp&quot;</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-387"><a href="#DuckDB.Generator-387"><span class="linenos">387</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">&quot;timestamp&quot;</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-388"><a href="#DuckDB.Generator-388"><span class="linenos">388</span></a> <span class="p">),</span>
-</span><span id="DuckDB.Generator-389"><a href="#DuckDB.Generator-389"><span class="linenos">389</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;JSON&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-390"><a href="#DuckDB.Generator-390"><span class="linenos">390</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileCont</span><span class="p">:</span> <span class="n">_rename_unless_within_group</span><span class="p">(</span><span class="s2">&quot;PERCENTILE_CONT&quot;</span><span class="p">,</span> <span class="s2">&quot;QUANTILE_CONT&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-391"><a href="#DuckDB.Generator-391"><span class="linenos">391</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileDisc</span><span class="p">:</span> <span class="n">_rename_unless_within_group</span><span class="p">(</span><span class="s2">&quot;PERCENTILE_DISC&quot;</span><span class="p">,</span> <span class="s2">&quot;QUANTILE_DISC&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-392"><a href="#DuckDB.Generator-392"><span class="linenos">392</span></a> <span class="c1"># DuckDB doesn&#39;t allow qualified columns inside of PIVOT expressions.</span>
-</span><span id="DuckDB.Generator-393"><a href="#DuckDB.Generator-393"><span class="linenos">393</span></a> <span class="c1"># See: https://github.com/duckdb/duckdb/blob/671faf92411182f81dce42ac43de8bfb05d9909e/src/planner/binder/tableref/bind_pivot.cpp#L61-L62</span>
-</span><span id="DuckDB.Generator-394"><a href="#DuckDB.Generator-394"><span class="linenos">394</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">unqualify_columns</span><span class="p">]),</span>
-</span><span id="DuckDB.Generator-395"><a href="#DuckDB.Generator-395"><span class="linenos">395</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpExtract</span><span class="p">:</span> <span class="n">regexp_extract_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-396"><a href="#DuckDB.Generator-396"><span class="linenos">396</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpReplace</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
-</span><span id="DuckDB.Generator-397"><a href="#DuckDB.Generator-397"><span class="linenos">397</span></a> <span class="s2">&quot;REGEXP_REPLACE&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-398"><a href="#DuckDB.Generator-398"><span class="linenos">398</span></a> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-399"><a href="#DuckDB.Generator-399"><span class="linenos">399</span></a> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-400"><a href="#DuckDB.Generator-400"><span class="linenos">400</span></a> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;replacement&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-401"><a href="#DuckDB.Generator-401"><span class="linenos">401</span></a> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;modifiers&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-402"><a href="#DuckDB.Generator-402"><span class="linenos">402</span></a> <span class="p">),</span>
-</span><span id="DuckDB.Generator-403"><a href="#DuckDB.Generator-403"><span class="linenos">403</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;REGEXP_MATCHES&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-404"><a href="#DuckDB.Generator-404"><span class="linenos">404</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;STR_SPLIT_REGEX&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-405"><a href="#DuckDB.Generator-405"><span class="linenos">405</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;RANDOM&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-406"><a href="#DuckDB.Generator-406"><span class="linenos">406</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SafeDivide</span><span class="p">:</span> <span class="n">no_safe_divide_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-407"><a href="#DuckDB.Generator-407"><span class="linenos">407</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;STR_SPLIT&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-408"><a href="#DuckDB.Generator-408"><span class="linenos">408</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="p">:</span> <span class="n">_sort_array_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-409"><a href="#DuckDB.Generator-409"><span class="linenos">409</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-410"><a href="#DuckDB.Generator-410"><span class="linenos">410</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(</span><span class="si">{</span><span class="n">str_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-411"><a href="#DuckDB.Generator-411"><span class="linenos">411</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">:</span> <span class="n">str_to_time_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-412"><a href="#DuckDB.Generator-412"><span class="linenos">412</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-413"><a href="#DuckDB.Generator-413"><span class="linenos">413</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;EPOCH(STRPTIME(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">))&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-414"><a href="#DuckDB.Generator-414"><span class="linenos">414</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">:</span> <span class="n">_struct_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-415"><a href="#DuckDB.Generator-415"><span class="linenos">415</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Timestamp</span><span class="p">:</span> <span class="n">no_timestamp_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-416"><a href="#DuckDB.Generator-416"><span class="linenos">416</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampDiff</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
-</span><span id="DuckDB.Generator-417"><a href="#DuckDB.Generator-417"><span class="linenos">417</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">unit</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span>
-</span><span id="DuckDB.Generator-418"><a href="#DuckDB.Generator-418"><span class="linenos">418</span></a> <span class="p">),</span>
-</span><span id="DuckDB.Generator-419"><a href="#DuckDB.Generator-419"><span class="linenos">419</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> <span class="n">timestamptrunc_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-420"><a href="#DuckDB.Generator-420"><span class="linenos">420</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-421"><a href="#DuckDB.Generator-421"><span class="linenos">421</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">:</span> <span class="n">timestrtotime_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-422"><a href="#DuckDB.Generator-422"><span class="linenos">422</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToUnix</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;EPOCH(CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TIMESTAMP))&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-423"><a href="#DuckDB.Generator-423"><span class="linenos">423</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-424"><a href="#DuckDB.Generator-424"><span class="linenos">424</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;STRFTIME(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-425"><a href="#DuckDB.Generator-425"><span class="linenos">425</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;EPOCH&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-426"><a href="#DuckDB.Generator-426"><span class="linenos">426</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDiToDi</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-427"><a href="#DuckDB.Generator-427"><span class="linenos">427</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(SUBSTR(REPLACE(CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), &#39;-&#39;, &#39;&#39;), 1, 8) AS INT)&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-428"><a href="#DuckDB.Generator-428"><span class="linenos">428</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">:</span> <span class="n">_ts_or_ds_add_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-429"><a href="#DuckDB.Generator-429"><span class="linenos">429</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsDiff</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
-</span><span id="DuckDB.Generator-430"><a href="#DuckDB.Generator-430"><span class="linenos">430</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-431"><a href="#DuckDB.Generator-431"><span class="linenos">431</span></a> <span class="sa">f</span><span class="s2">&quot;&#39;</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;unit&#39;</span><span class="p">)</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">&#39;DAY&#39;</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-432"><a href="#DuckDB.Generator-432"><span class="linenos">432</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;TIMESTAMP&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-433"><a href="#DuckDB.Generator-433"><span class="linenos">433</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">&quot;TIMESTAMP&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-434"><a href="#DuckDB.Generator-434"><span class="linenos">434</span></a> <span class="p">),</span>
-</span><span id="DuckDB.Generator-435"><a href="#DuckDB.Generator-435"><span class="linenos">435</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-436"><a href="#DuckDB.Generator-436"><span class="linenos">436</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;STRFTIME(TO_TIMESTAMP(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">), </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-437"><a href="#DuckDB.Generator-437"><span class="linenos">437</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">_unix_to_time_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-438"><a href="#DuckDB.Generator-438"><span class="linenos">438</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTimeStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(TO_TIMESTAMP(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">) AS TEXT)&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-439"><a href="#DuckDB.Generator-439"><span class="linenos">439</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VariancePop</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;VAR_POP&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-440"><a href="#DuckDB.Generator-440"><span class="linenos">440</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WeekOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;WEEKOFYEAR&quot;</span><span class="p">),</span>
-</span><span id="DuckDB.Generator-441"><a href="#DuckDB.Generator-441"><span class="linenos">441</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">:</span> <span class="n">bool_xor_sql</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-442"><a href="#DuckDB.Generator-442"><span class="linenos">442</span></a> <span class="p">}</span>
-</span><span id="DuckDB.Generator-443"><a href="#DuckDB.Generator-443"><span class="linenos">443</span></a>
-</span><span id="DuckDB.Generator-444"><a href="#DuckDB.Generator-444"><span class="linenos">444</span></a> <span class="n">SUPPORTED_JSON_PATH_PARTS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="DuckDB.Generator-445"><a href="#DuckDB.Generator-445"><span class="linenos">445</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-446"><a href="#DuckDB.Generator-446"><span class="linenos">446</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-447"><a href="#DuckDB.Generator-447"><span class="linenos">447</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-448"><a href="#DuckDB.Generator-448"><span class="linenos">448</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-449"><a href="#DuckDB.Generator-449"><span class="linenos">449</span></a> <span class="p">}</span>
-</span><span id="DuckDB.Generator-450"><a href="#DuckDB.Generator-450"><span class="linenos">450</span></a>
-</span><span id="DuckDB.Generator-451"><a href="#DuckDB.Generator-451"><span class="linenos">451</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="DuckDB.Generator-452"><a href="#DuckDB.Generator-452"><span class="linenos">452</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-453"><a href="#DuckDB.Generator-453"><span class="linenos">453</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BINARY</span><span class="p">:</span> <span class="s2">&quot;BLOB&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-454"><a href="#DuckDB.Generator-454"><span class="linenos">454</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-455"><a href="#DuckDB.Generator-455"><span class="linenos">455</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">:</span> <span class="s2">&quot;REAL&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-456"><a href="#DuckDB.Generator-456"><span class="linenos">456</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-457"><a href="#DuckDB.Generator-457"><span class="linenos">457</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-458"><a href="#DuckDB.Generator-458"><span class="linenos">458</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UINT</span><span class="p">:</span> <span class="s2">&quot;UINTEGER&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-459"><a href="#DuckDB.Generator-459"><span class="linenos">459</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">:</span> <span class="s2">&quot;BLOB&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-460"><a href="#DuckDB.Generator-460"><span class="linenos">460</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-461"><a href="#DuckDB.Generator-461"><span class="linenos">461</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_S</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP_S&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-462"><a href="#DuckDB.Generator-462"><span class="linenos">462</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_MS</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP_MS&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-463"><a href="#DuckDB.Generator-463"><span class="linenos">463</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_NS</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP_NS&quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-464"><a href="#DuckDB.Generator-464"><span class="linenos">464</span></a> <span class="p">}</span>
-</span><span id="DuckDB.Generator-465"><a href="#DuckDB.Generator-465"><span class="linenos">465</span></a>
-</span><span id="DuckDB.Generator-466"><a href="#DuckDB.Generator-466"><span class="linenos">466</span></a> <span class="n">STAR_MAPPING</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">STAR_MAPPING</span><span class="p">,</span> <span class="s2">&quot;except&quot;</span><span class="p">:</span> <span class="s2">&quot;EXCLUDE&quot;</span><span class="p">}</span>
-</span><span id="DuckDB.Generator-467"><a href="#DuckDB.Generator-467"><span class="linenos">467</span></a>
-</span><span id="DuckDB.Generator-468"><a href="#DuckDB.Generator-468"><span class="linenos">468</span></a> <span class="n">UNWRAPPED_INTERVAL_VALUES</span> <span class="o">=</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span>
-</span><span id="DuckDB.Generator-469"><a href="#DuckDB.Generator-469"><span class="linenos">469</span></a>
-</span><span id="DuckDB.Generator-470"><a href="#DuckDB.Generator-470"><span class="linenos">470</span></a> <span class="c1"># DuckDB doesn&#39;t generally support CREATE TABLE .. properties</span>
-</span><span id="DuckDB.Generator-471"><a href="#DuckDB.Generator-471"><span class="linenos">471</span></a> <span class="c1"># https://duckdb.org/docs/sql/statements/create_table.html</span>
-</span><span id="DuckDB.Generator-472"><a href="#DuckDB.Generator-472"><span class="linenos">472</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="DuckDB.Generator-473"><a href="#DuckDB.Generator-473"><span class="linenos">473</span></a> <span class="n">prop</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span>
-</span><span id="DuckDB.Generator-474"><a href="#DuckDB.Generator-474"><span class="linenos">474</span></a> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span>
-</span><span id="DuckDB.Generator-475"><a href="#DuckDB.Generator-475"><span class="linenos">475</span></a> <span class="p">}</span>
-</span><span id="DuckDB.Generator-476"><a href="#DuckDB.Generator-476"><span class="linenos">476</span></a>
-</span><span id="DuckDB.Generator-477"><a href="#DuckDB.Generator-477"><span class="linenos">477</span></a> <span class="c1"># There are a few exceptions (e.g. temporary tables) which are supported or</span>
-</span><span id="DuckDB.Generator-478"><a href="#DuckDB.Generator-478"><span class="linenos">478</span></a> <span class="c1"># can be transpiled to DuckDB, so we explicitly override them accordingly</span>
-</span><span id="DuckDB.Generator-479"><a href="#DuckDB.Generator-479"><span class="linenos">479</span></a> <span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span>
-</span><span id="DuckDB.Generator-480"><a href="#DuckDB.Generator-480"><span class="linenos">480</span></a> <span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</span><span class="p">]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span>
-</span><span id="DuckDB.Generator-481"><a href="#DuckDB.Generator-481"><span class="linenos">481</span></a>
-</span><span id="DuckDB.Generator-482"><a href="#DuckDB.Generator-482"><span class="linenos">482</span></a> <span class="k">def</span> <span class="nf">timefromparts_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="DuckDB.Generator-483"><a href="#DuckDB.Generator-483"><span class="linenos">483</span></a> <span class="n">nano</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nano&quot;</span><span class="p">)</span>
-</span><span id="DuckDB.Generator-484"><a href="#DuckDB.Generator-484"><span class="linenos">484</span></a> <span class="k">if</span> <span class="n">nano</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
-</span><span id="DuckDB.Generator-485"><a href="#DuckDB.Generator-485"><span class="linenos">485</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span>
-</span><span id="DuckDB.Generator-486"><a href="#DuckDB.Generator-486"><span class="linenos">486</span></a> <span class="s2">&quot;sec&quot;</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;sec&quot;</span><span class="p">]</span> <span class="o">+</span> <span class="n">nano</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000000000.0</span><span class="p">)</span>
-</span><span id="DuckDB.Generator-487"><a href="#DuckDB.Generator-487"><span class="linenos">487</span></a> <span class="p">)</span>
-</span><span id="DuckDB.Generator-488"><a href="#DuckDB.Generator-488"><span class="linenos">488</span></a>
-</span><span id="DuckDB.Generator-489"><a href="#DuckDB.Generator-489"><span class="linenos">489</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_TIME&quot;</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
-</span><span id="DuckDB.Generator-490"><a href="#DuckDB.Generator-490"><span class="linenos">490</span></a>
-</span><span id="DuckDB.Generator-491"><a href="#DuckDB.Generator-491"><span class="linenos">491</span></a> <span class="k">def</span> <span class="nf">timestampfromparts_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="DuckDB.Generator-492"><a href="#DuckDB.Generator-492"><span class="linenos">492</span></a> <span class="n">sec</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;sec&quot;</span><span class="p">]</span>
-</span><span id="DuckDB.Generator-493"><a href="#DuckDB.Generator-493"><span class="linenos">493</span></a>
-</span><span id="DuckDB.Generator-494"><a href="#DuckDB.Generator-494"><span class="linenos">494</span></a> <span class="n">milli</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;milli&quot;</span><span class="p">)</span>
-</span><span id="DuckDB.Generator-495"><a href="#DuckDB.Generator-495"><span class="linenos">495</span></a> <span class="k">if</span> <span class="n">milli</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
-</span><span id="DuckDB.Generator-496"><a href="#DuckDB.Generator-496"><span class="linenos">496</span></a> <span class="n">sec</span> <span class="o">+=</span> <span class="n">milli</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000.0</span><span class="p">)</span>
-</span><span id="DuckDB.Generator-497"><a href="#DuckDB.Generator-497"><span class="linenos">497</span></a>
-</span><span id="DuckDB.Generator-498"><a href="#DuckDB.Generator-498"><span class="linenos">498</span></a> <span class="n">nano</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nano&quot;</span><span class="p">)</span>
-</span><span id="DuckDB.Generator-499"><a href="#DuckDB.Generator-499"><span class="linenos">499</span></a> <span class="k">if</span> <span class="n">nano</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
-</span><span id="DuckDB.Generator-500"><a href="#DuckDB.Generator-500"><span class="linenos">500</span></a> <span class="n">sec</span> <span class="o">+=</span> <span class="n">nano</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000000000.0</span><span class="p">)</span>
-</span><span id="DuckDB.Generator-501"><a href="#DuckDB.Generator-501"><span class="linenos">501</span></a>
-</span><span id="DuckDB.Generator-502"><a href="#DuckDB.Generator-502"><span class="linenos">502</span></a> <span class="k">if</span> <span class="n">milli</span> <span class="ow">or</span> <span class="n">nano</span><span class="p">:</span>
-</span><span id="DuckDB.Generator-503"><a href="#DuckDB.Generator-503"><span class="linenos">503</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;sec&quot;</span><span class="p">,</span> <span class="n">sec</span><span class="p">)</span>
-</span><span id="DuckDB.Generator-504"><a href="#DuckDB.Generator-504"><span class="linenos">504</span></a>
-</span><span id="DuckDB.Generator-505"><a href="#DuckDB.Generator-505"><span class="linenos">505</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_TIMESTAMP&quot;</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
-</span><span id="DuckDB.Generator-506"><a href="#DuckDB.Generator-506"><span class="linenos">506</span></a>
-</span><span id="DuckDB.Generator-507"><a href="#DuckDB.Generator-507"><span class="linenos">507</span></a> <span class="k">def</span> <span class="nf">tablesample_sql</span><span class="p">(</span>
-</span><span id="DuckDB.Generator-508"><a href="#DuckDB.Generator-508"><span class="linenos">508</span></a> <span class="bp">self</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-509"><a href="#DuckDB.Generator-509"><span class="linenos">509</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-510"><a href="#DuckDB.Generator-510"><span class="linenos">510</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot; AS &quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-511"><a href="#DuckDB.Generator-511"><span class="linenos">511</span></a> <span class="n">tablesample_keyword</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="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
-</span><span id="DuckDB.Generator-512"><a href="#DuckDB.Generator-512"><span class="linenos">512</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="DuckDB.Generator-513"><a href="#DuckDB.Generator-513"><span class="linenos">513</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span>
-</span><span id="DuckDB.Generator-514"><a href="#DuckDB.Generator-514"><span class="linenos">514</span></a> <span class="c1"># This sample clause only applies to a single source, not the entire resulting relation</span>
-</span><span id="DuckDB.Generator-515"><a href="#DuckDB.Generator-515"><span class="linenos">515</span></a> <span class="n">tablesample_keyword</span> <span class="o">=</span> <span class="s2">&quot;TABLESAMPLE&quot;</span>
-</span><span id="DuckDB.Generator-516"><a href="#DuckDB.Generator-516"><span class="linenos">516</span></a>
-</span><span id="DuckDB.Generator-517"><a href="#DuckDB.Generator-517"><span class="linenos">517</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">tablesample_sql</span><span class="p">(</span>
-</span><span id="DuckDB.Generator-518"><a href="#DuckDB.Generator-518"><span class="linenos">518</span></a> <span class="n">expression</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span> <span class="n">tablesample_keyword</span><span class="o">=</span><span class="n">tablesample_keyword</span>
-</span><span id="DuckDB.Generator-519"><a href="#DuckDB.Generator-519"><span class="linenos">519</span></a> <span class="p">)</span>
-</span><span id="DuckDB.Generator-520"><a href="#DuckDB.Generator-520"><span class="linenos">520</span></a>
-</span><span id="DuckDB.Generator-521"><a href="#DuckDB.Generator-521"><span class="linenos">521</span></a> <span class="k">def</span> <span class="nf">interval_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="DuckDB.Generator-522"><a href="#DuckDB.Generator-522"><span class="linenos">522</span></a> <span class="n">multiplier</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="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
-</span><span id="DuckDB.Generator-523"><a href="#DuckDB.Generator-523"><span class="linenos">523</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">&quot;unit&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
-</span><span id="DuckDB.Generator-524"><a href="#DuckDB.Generator-524"><span class="linenos">524</span></a>
-</span><span id="DuckDB.Generator-525"><a href="#DuckDB.Generator-525"><span class="linenos">525</span></a> <span class="k">if</span> <span class="n">unit</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;week&quot;</span><span class="p">):</span>
-</span><span id="DuckDB.Generator-526"><a href="#DuckDB.Generator-526"><span class="linenos">526</span></a> <span class="n">multiplier</span> <span class="o">=</span> <span class="mi">7</span>
-</span><span id="DuckDB.Generator-527"><a href="#DuckDB.Generator-527"><span class="linenos">527</span></a> <span class="k">if</span> <span class="n">unit</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;quarter&quot;</span><span class="p">):</span>
-</span><span id="DuckDB.Generator-528"><a href="#DuckDB.Generator-528"><span class="linenos">528</span></a> <span class="n">multiplier</span> <span class="o">=</span> <span class="mi">90</span>
-</span><span id="DuckDB.Generator-529"><a href="#DuckDB.Generator-529"><span class="linenos">529</span></a>
-</span><span id="DuckDB.Generator-530"><a href="#DuckDB.Generator-530"><span class="linenos">530</span></a> <span class="k">if</span> <span class="n">multiplier</span><span class="p">:</span>
-</span><span id="DuckDB.Generator-531"><a href="#DuckDB.Generator-531"><span class="linenos">531</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;(</span><span class="si">{</span><span class="n">multiplier</span><span class="si">}</span><span class="s2"> * </span><span class="si">{</span><span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s1">&#39;DAY&#39;</span><span class="p">)))</span><span class="si">}</span><span class="s2">)&quot;</span>
-</span><span id="DuckDB.Generator-532"><a href="#DuckDB.Generator-532"><span class="linenos">532</span></a>
-</span><span id="DuckDB.Generator-533"><a href="#DuckDB.Generator-533"><span class="linenos">533</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
-</span><span id="DuckDB.Generator-534"><a href="#DuckDB.Generator-534"><span class="linenos">534</span></a>
-</span><span id="DuckDB.Generator-535"><a href="#DuckDB.Generator-535"><span class="linenos">535</span></a> <span class="k">def</span> <span class="nf">columndef_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot; &quot;</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="DuckDB.Generator-536"><a href="#DuckDB.Generator-536"><span class="linenos">536</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UserDefinedFunction</span><span class="p">):</span>
-</span><span id="DuckDB.Generator-537"><a href="#DuckDB.Generator-537"><span class="linenos">537</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
-</span><span id="DuckDB.Generator-538"><a href="#DuckDB.Generator-538"><span class="linenos">538</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">columndef_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sep</span><span class="p">)</span>
-</span><span id="DuckDB.Generator-539"><a href="#DuckDB.Generator-539"><span class="linenos">539</span></a>
-</span><span id="DuckDB.Generator-540"><a href="#DuckDB.Generator-540"><span class="linenos">540</span></a> <span class="k">def</span> <span class="nf">placeholder_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="DuckDB.Generator-541"><a href="#DuckDB.Generator-541"><span class="linenos">541</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;$</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">&quot;?&quot;</span>
+</span><span id="DuckDB.Generator-337"><a href="#DuckDB.Generator-337"><span class="linenos">337</span></a> <span class="n">MULTI_ARG_DISTINCT</span> <span class="o">=</span> <span class="kc">False</span>
+</span><span id="DuckDB.Generator-338"><a href="#DuckDB.Generator-338"><span class="linenos">338</span></a>
+</span><span id="DuckDB.Generator-339"><a href="#DuckDB.Generator-339"><span class="linenos">339</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="DuckDB.Generator-340"><a href="#DuckDB.Generator-340"><span class="linenos">340</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TRANSFORMS</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-341"><a href="#DuckDB.Generator-341"><span class="linenos">341</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ApproxDistinct</span><span class="p">:</span> <span class="n">approx_count_distinct_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-342"><a href="#DuckDB.Generator-342"><span class="linenos">342</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="p">(</span>
+</span><span id="DuckDB.Generator-343"><a href="#DuckDB.Generator-343"><span class="linenos">343</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span><span class="s2">&quot;ARRAY&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">])</span>
+</span><span id="DuckDB.Generator-344"><a href="#DuckDB.Generator-344"><span class="linenos">344</span></a> <span class="k">if</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span> <span class="ow">and</span> <span class="n">e</span><span class="o">.</span><span class="n">expressions</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span>
+</span><span id="DuckDB.Generator-345"><a href="#DuckDB.Generator-345"><span class="linenos">345</span></a> <span class="k">else</span> <span class="n">inline_array_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span>
+</span><span id="DuckDB.Generator-346"><a href="#DuckDB.Generator-346"><span class="linenos">346</span></a> <span class="p">),</span>
+</span><span id="DuckDB.Generator-347"><a href="#DuckDB.Generator-347"><span class="linenos">347</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySize</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ARRAY_LENGTH&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-348"><a href="#DuckDB.Generator-348"><span class="linenos">348</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMax</span><span class="p">:</span> <span class="n">arg_max_or_min_no_count</span><span class="p">(</span><span class="s2">&quot;ARG_MAX&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-349"><a href="#DuckDB.Generator-349"><span class="linenos">349</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArgMin</span><span class="p">:</span> <span class="n">arg_max_or_min_no_count</span><span class="p">(</span><span class="s2">&quot;ARG_MIN&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-350"><a href="#DuckDB.Generator-350"><span class="linenos">350</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySort</span><span class="p">:</span> <span class="n">_array_sort_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-351"><a href="#DuckDB.Generator-351"><span class="linenos">351</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;LIST_SUM&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-352"><a href="#DuckDB.Generator-352"><span class="linenos">352</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;XOR&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-353"><a href="#DuckDB.Generator-353"><span class="linenos">353</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CommentColumnConstraint</span><span class="p">:</span> <span class="n">no_comment_column_constraint_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-354"><a href="#DuckDB.Generator-354"><span class="linenos">354</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">&quot;CURRENT_DATE&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-355"><a href="#DuckDB.Generator-355"><span class="linenos">355</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTime</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">&quot;CURRENT_TIME&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-356"><a href="#DuckDB.Generator-356"><span class="linenos">356</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="s2">&quot;CURRENT_TIMESTAMP&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-357"><a href="#DuckDB.Generator-357"><span class="linenos">357</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfMonth</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAYOFMONTH&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-358"><a href="#DuckDB.Generator-358"><span class="linenos">358</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfWeek</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAYOFWEEK&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-359"><a href="#DuckDB.Generator-359"><span class="linenos">359</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DayOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;DAYOFYEAR&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-360"><a href="#DuckDB.Generator-360"><span class="linenos">360</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-361"><a href="#DuckDB.Generator-361"><span class="linenos">361</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Date</span><span class="p">:</span> <span class="n">_date_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-362"><a href="#DuckDB.Generator-362"><span class="linenos">362</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-363"><a href="#DuckDB.Generator-363"><span class="linenos">363</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateFromParts</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_DATE&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-364"><a href="#DuckDB.Generator-364"><span class="linenos">364</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_delta_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-365"><a href="#DuckDB.Generator-365"><span class="linenos">365</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
+</span><span id="DuckDB.Generator-366"><a href="#DuckDB.Generator-366"><span class="linenos">366</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span> <span class="sa">f</span><span class="s2">&quot;&#39;</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;unit&#39;</span><span class="p">)</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">&#39;DAY&#39;</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span>
+</span><span id="DuckDB.Generator-367"><a href="#DuckDB.Generator-367"><span class="linenos">367</span></a> <span class="p">),</span>
+</span><span id="DuckDB.Generator-368"><a href="#DuckDB.Generator-368"><span class="linenos">368</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateStrToDate</span><span class="p">:</span> <span class="n">datestrtodate_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-369"><a href="#DuckDB.Generator-369"><span class="linenos">369</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateToDi</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-370"><a href="#DuckDB.Generator-370"><span class="linenos">370</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(STRFTIME(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">DATEINT_FORMAT</span><span class="si">}</span><span class="s2">) AS INT)&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-371"><a href="#DuckDB.Generator-371"><span class="linenos">371</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Decode</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="n">encode_decode_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="s2">&quot;DECODE&quot;</span><span class="p">,</span> <span class="n">replace</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-372"><a href="#DuckDB.Generator-372"><span class="linenos">372</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DiToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-373"><a href="#DuckDB.Generator-373"><span class="linenos">373</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(STRPTIME(CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), </span><span class="si">{</span><span class="n">DuckDB</span><span class="o">.</span><span class="n">DATEINT_FORMAT</span><span class="si">}</span><span class="s2">) AS DATE)&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-374"><a href="#DuckDB.Generator-374"><span class="linenos">374</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Encode</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="n">encode_decode_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">,</span> <span class="s2">&quot;ENCODE&quot;</span><span class="p">,</span> <span class="n">replace</span><span class="o">=</span><span class="kc">False</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-375"><a href="#DuckDB.Generator-375"><span class="linenos">375</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;UNNEST&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-376"><a href="#DuckDB.Generator-376"><span class="linenos">376</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IntDiv</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">binary</span><span class="p">(</span><span class="n">e</span><span class="p">,</span> <span class="s2">&quot;//&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-377"><a href="#DuckDB.Generator-377"><span class="linenos">377</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsInf</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ISINF&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-378"><a href="#DuckDB.Generator-378"><span class="linenos">378</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">IsNan</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;ISNAN&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-379"><a href="#DuckDB.Generator-379"><span class="linenos">379</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtract</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-380"><a href="#DuckDB.Generator-380"><span class="linenos">380</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONExtractScalar</span><span class="p">:</span> <span class="n">arrow_json_extract_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-381"><a href="#DuckDB.Generator-381"><span class="linenos">381</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONFormat</span><span class="p">:</span> <span class="n">_json_format_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-382"><a href="#DuckDB.Generator-382"><span class="linenos">382</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalOr</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;BOOL_OR&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-383"><a href="#DuckDB.Generator-383"><span class="linenos">383</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">LogicalAnd</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;BOOL_AND&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-384"><a href="#DuckDB.Generator-384"><span class="linenos">384</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MonthsBetween</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
+</span><span id="DuckDB.Generator-385"><a href="#DuckDB.Generator-385"><span class="linenos">385</span></a> <span class="s2">&quot;DATEDIFF&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-386"><a href="#DuckDB.Generator-386"><span class="linenos">386</span></a> <span class="s2">&quot;&#39;month&#39;&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-387"><a href="#DuckDB.Generator-387"><span class="linenos">387</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;timestamp&quot;</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-388"><a href="#DuckDB.Generator-388"><span class="linenos">388</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">&quot;timestamp&quot;</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">True</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-389"><a href="#DuckDB.Generator-389"><span class="linenos">389</span></a> <span class="p">),</span>
+</span><span id="DuckDB.Generator-390"><a href="#DuckDB.Generator-390"><span class="linenos">390</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ParseJSON</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;JSON&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-391"><a href="#DuckDB.Generator-391"><span class="linenos">391</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileCont</span><span class="p">:</span> <span class="n">_rename_unless_within_group</span><span class="p">(</span><span class="s2">&quot;PERCENTILE_CONT&quot;</span><span class="p">,</span> <span class="s2">&quot;QUANTILE_CONT&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-392"><a href="#DuckDB.Generator-392"><span class="linenos">392</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">PercentileDisc</span><span class="p">:</span> <span class="n">_rename_unless_within_group</span><span class="p">(</span><span class="s2">&quot;PERCENTILE_DISC&quot;</span><span class="p">,</span> <span class="s2">&quot;QUANTILE_DISC&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-393"><a href="#DuckDB.Generator-393"><span class="linenos">393</span></a> <span class="c1"># DuckDB doesn&#39;t allow qualified columns inside of PIVOT expressions.</span>
+</span><span id="DuckDB.Generator-394"><a href="#DuckDB.Generator-394"><span class="linenos">394</span></a> <span class="c1"># See: https://github.com/duckdb/duckdb/blob/671faf92411182f81dce42ac43de8bfb05d9909e/src/planner/binder/tableref/bind_pivot.cpp#L61-L62</span>
+</span><span id="DuckDB.Generator-395"><a href="#DuckDB.Generator-395"><span class="linenos">395</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> <span class="n">transforms</span><span class="o">.</span><span class="n">preprocess</span><span class="p">([</span><span class="n">transforms</span><span class="o">.</span><span class="n">unqualify_columns</span><span class="p">]),</span>
+</span><span id="DuckDB.Generator-396"><a href="#DuckDB.Generator-396"><span class="linenos">396</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpExtract</span><span class="p">:</span> <span class="n">regexp_extract_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-397"><a href="#DuckDB.Generator-397"><span class="linenos">397</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpReplace</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
+</span><span id="DuckDB.Generator-398"><a href="#DuckDB.Generator-398"><span class="linenos">398</span></a> <span class="s2">&quot;REGEXP_REPLACE&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-399"><a href="#DuckDB.Generator-399"><span class="linenos">399</span></a> <span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-400"><a href="#DuckDB.Generator-400"><span class="linenos">400</span></a> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-401"><a href="#DuckDB.Generator-401"><span class="linenos">401</span></a> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;replacement&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-402"><a href="#DuckDB.Generator-402"><span class="linenos">402</span></a> <span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;modifiers&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-403"><a href="#DuckDB.Generator-403"><span class="linenos">403</span></a> <span class="p">),</span>
+</span><span id="DuckDB.Generator-404"><a href="#DuckDB.Generator-404"><span class="linenos">404</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;REGEXP_MATCHES&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-405"><a href="#DuckDB.Generator-405"><span class="linenos">405</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpSplit</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;STR_SPLIT_REGEX&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-406"><a href="#DuckDB.Generator-406"><span class="linenos">406</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Rand</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;RANDOM&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-407"><a href="#DuckDB.Generator-407"><span class="linenos">407</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SafeDivide</span><span class="p">:</span> <span class="n">no_safe_divide_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-408"><a href="#DuckDB.Generator-408"><span class="linenos">408</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Split</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;STR_SPLIT&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-409"><a href="#DuckDB.Generator-409"><span class="linenos">409</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">SortArray</span><span class="p">:</span> <span class="n">_sort_array_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-410"><a href="#DuckDB.Generator-410"><span class="linenos">410</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrPosition</span><span class="p">:</span> <span class="n">str_position_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-411"><a href="#DuckDB.Generator-411"><span class="linenos">411</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(</span><span class="si">{</span><span class="n">str_to_time_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="w"> </span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-412"><a href="#DuckDB.Generator-412"><span class="linenos">412</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">:</span> <span class="n">str_to_time_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-413"><a href="#DuckDB.Generator-413"><span class="linenos">413</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToUnix</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-414"><a href="#DuckDB.Generator-414"><span class="linenos">414</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;EPOCH(STRPTIME(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">))&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-415"><a href="#DuckDB.Generator-415"><span class="linenos">415</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Struct</span><span class="p">:</span> <span class="n">_struct_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-416"><a href="#DuckDB.Generator-416"><span class="linenos">416</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Timestamp</span><span class="p">:</span> <span class="n">no_timestamp_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-417"><a href="#DuckDB.Generator-417"><span class="linenos">417</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampDiff</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
+</span><span id="DuckDB.Generator-418"><a href="#DuckDB.Generator-418"><span class="linenos">418</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">string</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">unit</span><span class="p">),</span> <span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="n">e</span><span class="o">.</span><span class="n">this</span>
+</span><span id="DuckDB.Generator-419"><a href="#DuckDB.Generator-419"><span class="linenos">419</span></a> <span class="p">),</span>
+</span><span id="DuckDB.Generator-420"><a href="#DuckDB.Generator-420"><span class="linenos">420</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">:</span> <span class="n">timestamptrunc_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-421"><a href="#DuckDB.Generator-421"><span class="linenos">421</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToDate</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS DATE)&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-422"><a href="#DuckDB.Generator-422"><span class="linenos">422</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToTime</span><span class="p">:</span> <span class="n">timestrtotime_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-423"><a href="#DuckDB.Generator-423"><span class="linenos">423</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeStrToUnix</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;EPOCH(CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TIMESTAMP))&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-424"><a href="#DuckDB.Generator-424"><span class="linenos">424</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-425"><a href="#DuckDB.Generator-425"><span class="linenos">425</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;STRFTIME(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">, </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-426"><a href="#DuckDB.Generator-426"><span class="linenos">426</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TimeToUnix</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;EPOCH&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-427"><a href="#DuckDB.Generator-427"><span class="linenos">427</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDiToDi</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-428"><a href="#DuckDB.Generator-428"><span class="linenos">428</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(SUBSTR(REPLACE(CAST(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2"> AS TEXT), &#39;-&#39;, &#39;&#39;), 1, 8) AS INT)&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-429"><a href="#DuckDB.Generator-429"><span class="linenos">429</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsAdd</span><span class="p">:</span> <span class="n">_ts_or_ds_add_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-430"><a href="#DuckDB.Generator-430"><span class="linenos">430</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsDiff</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">func</span><span class="p">(</span>
+</span><span id="DuckDB.Generator-431"><a href="#DuckDB.Generator-431"><span class="linenos">431</span></a> <span class="s2">&quot;DATE_DIFF&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-432"><a href="#DuckDB.Generator-432"><span class="linenos">432</span></a> <span class="sa">f</span><span class="s2">&quot;&#39;</span><span class="si">{</span><span class="n">e</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s1">&#39;unit&#39;</span><span class="p">)</span><span class="w"> </span><span class="ow">or</span><span class="w"> </span><span class="s1">&#39;DAY&#39;</span><span class="si">}</span><span class="s2">&#39;&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-433"><a href="#DuckDB.Generator-433"><span class="linenos">433</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;TIMESTAMP&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-434"><a href="#DuckDB.Generator-434"><span class="linenos">434</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">cast</span><span class="p">(</span><span class="n">e</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="s2">&quot;TIMESTAMP&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-435"><a href="#DuckDB.Generator-435"><span class="linenos">435</span></a> <span class="p">),</span>
+</span><span id="DuckDB.Generator-436"><a href="#DuckDB.Generator-436"><span class="linenos">436</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-437"><a href="#DuckDB.Generator-437"><span class="linenos">437</span></a> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;STRFTIME(TO_TIMESTAMP(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">), </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">format_time</span><span class="p">(</span><span class="n">e</span><span class="p">)</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-438"><a href="#DuckDB.Generator-438"><span class="linenos">438</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</span><span class="p">:</span> <span class="n">_unix_to_time_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-439"><a href="#DuckDB.Generator-439"><span class="linenos">439</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTimeStr</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">,</span> <span class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;CAST(TO_TIMESTAMP(</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;this&#39;</span><span class="p">)</span><span class="si">}</span><span class="s2">) AS TEXT)&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-440"><a href="#DuckDB.Generator-440"><span class="linenos">440</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VariancePop</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;VAR_POP&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-441"><a href="#DuckDB.Generator-441"><span class="linenos">441</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">WeekOfYear</span><span class="p">:</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;WEEKOFYEAR&quot;</span><span class="p">),</span>
+</span><span id="DuckDB.Generator-442"><a href="#DuckDB.Generator-442"><span class="linenos">442</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Xor</span><span class="p">:</span> <span class="n">bool_xor_sql</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-443"><a href="#DuckDB.Generator-443"><span class="linenos">443</span></a> <span class="p">}</span>
+</span><span id="DuckDB.Generator-444"><a href="#DuckDB.Generator-444"><span class="linenos">444</span></a>
+</span><span id="DuckDB.Generator-445"><a href="#DuckDB.Generator-445"><span class="linenos">445</span></a> <span class="n">SUPPORTED_JSON_PATH_PARTS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="DuckDB.Generator-446"><a href="#DuckDB.Generator-446"><span class="linenos">446</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathKey</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-447"><a href="#DuckDB.Generator-447"><span class="linenos">447</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathRoot</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-448"><a href="#DuckDB.Generator-448"><span class="linenos">448</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathSubscript</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-449"><a href="#DuckDB.Generator-449"><span class="linenos">449</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONPathWildcard</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-450"><a href="#DuckDB.Generator-450"><span class="linenos">450</span></a> <span class="p">}</span>
+</span><span id="DuckDB.Generator-451"><a href="#DuckDB.Generator-451"><span class="linenos">451</span></a>
+</span><span id="DuckDB.Generator-452"><a href="#DuckDB.Generator-452"><span class="linenos">452</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="DuckDB.Generator-453"><a href="#DuckDB.Generator-453"><span class="linenos">453</span></a> <span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">TYPE_MAPPING</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-454"><a href="#DuckDB.Generator-454"><span class="linenos">454</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">BINARY</span><span class="p">:</span> <span class="s2">&quot;BLOB&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-455"><a href="#DuckDB.Generator-455"><span class="linenos">455</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">CHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-456"><a href="#DuckDB.Generator-456"><span class="linenos">456</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">FLOAT</span><span class="p">:</span> <span class="s2">&quot;REAL&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-457"><a href="#DuckDB.Generator-457"><span class="linenos">457</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">NCHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-458"><a href="#DuckDB.Generator-458"><span class="linenos">458</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">NVARCHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-459"><a href="#DuckDB.Generator-459"><span class="linenos">459</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">UINT</span><span class="p">:</span> <span class="s2">&quot;UINTEGER&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-460"><a href="#DuckDB.Generator-460"><span class="linenos">460</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">:</span> <span class="s2">&quot;BLOB&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-461"><a href="#DuckDB.Generator-461"><span class="linenos">461</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">:</span> <span class="s2">&quot;TEXT&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-462"><a href="#DuckDB.Generator-462"><span class="linenos">462</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_S</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP_S&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-463"><a href="#DuckDB.Generator-463"><span class="linenos">463</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_MS</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP_MS&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-464"><a href="#DuckDB.Generator-464"><span class="linenos">464</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">TIMESTAMP_NS</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP_NS&quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-465"><a href="#DuckDB.Generator-465"><span class="linenos">465</span></a> <span class="p">}</span>
+</span><span id="DuckDB.Generator-466"><a href="#DuckDB.Generator-466"><span class="linenos">466</span></a>
+</span><span id="DuckDB.Generator-467"><a href="#DuckDB.Generator-467"><span class="linenos">467</span></a> <span class="n">STAR_MAPPING</span> <span class="o">=</span> <span class="p">{</span><span class="o">**</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">STAR_MAPPING</span><span class="p">,</span> <span class="s2">&quot;except&quot;</span><span class="p">:</span> <span class="s2">&quot;EXCLUDE&quot;</span><span class="p">}</span>
+</span><span id="DuckDB.Generator-468"><a href="#DuckDB.Generator-468"><span class="linenos">468</span></a>
+</span><span id="DuckDB.Generator-469"><a href="#DuckDB.Generator-469"><span class="linenos">469</span></a> <span class="n">UNWRAPPED_INTERVAL_VALUES</span> <span class="o">=</span> <span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Paren</span><span class="p">)</span>
+</span><span id="DuckDB.Generator-470"><a href="#DuckDB.Generator-470"><span class="linenos">470</span></a>
+</span><span id="DuckDB.Generator-471"><a href="#DuckDB.Generator-471"><span class="linenos">471</span></a> <span class="c1"># DuckDB doesn&#39;t generally support CREATE TABLE .. properties</span>
+</span><span id="DuckDB.Generator-472"><a href="#DuckDB.Generator-472"><span class="linenos">472</span></a> <span class="c1"># https://duckdb.org/docs/sql/statements/create_table.html</span>
+</span><span id="DuckDB.Generator-473"><a href="#DuckDB.Generator-473"><span class="linenos">473</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="DuckDB.Generator-474"><a href="#DuckDB.Generator-474"><span class="linenos">474</span></a> <span class="n">prop</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">UNSUPPORTED</span>
+</span><span id="DuckDB.Generator-475"><a href="#DuckDB.Generator-475"><span class="linenos">475</span></a> <span class="k">for</span> <span class="n">prop</span> <span class="ow">in</span> <span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="o">.</span><span class="n">PROPERTIES_LOCATION</span>
+</span><span id="DuckDB.Generator-476"><a href="#DuckDB.Generator-476"><span class="linenos">476</span></a> <span class="p">}</span>
+</span><span id="DuckDB.Generator-477"><a href="#DuckDB.Generator-477"><span class="linenos">477</span></a>
+</span><span id="DuckDB.Generator-478"><a href="#DuckDB.Generator-478"><span class="linenos">478</span></a> <span class="c1"># There are a few exceptions (e.g. temporary tables) which are supported or</span>
+</span><span id="DuckDB.Generator-479"><a href="#DuckDB.Generator-479"><span class="linenos">479</span></a> <span class="c1"># can be transpiled to DuckDB, so we explicitly override them accordingly</span>
+</span><span id="DuckDB.Generator-480"><a href="#DuckDB.Generator-480"><span class="linenos">480</span></a> <span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">LikeProperty</span><span class="p">]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_SCHEMA</span>
+</span><span id="DuckDB.Generator-481"><a href="#DuckDB.Generator-481"><span class="linenos">481</span></a> <span class="n">PROPERTIES_LOCATION</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">TemporaryProperty</span><span class="p">]</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">Properties</span><span class="o">.</span><span class="n">Location</span><span class="o">.</span><span class="n">POST_CREATE</span>
+</span><span id="DuckDB.Generator-482"><a href="#DuckDB.Generator-482"><span class="linenos">482</span></a>
+</span><span id="DuckDB.Generator-483"><a href="#DuckDB.Generator-483"><span class="linenos">483</span></a> <span class="k">def</span> <span class="nf">timefromparts_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="DuckDB.Generator-484"><a href="#DuckDB.Generator-484"><span class="linenos">484</span></a> <span class="n">nano</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nano&quot;</span><span class="p">)</span>
+</span><span id="DuckDB.Generator-485"><a href="#DuckDB.Generator-485"><span class="linenos">485</span></a> <span class="k">if</span> <span class="n">nano</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+</span><span id="DuckDB.Generator-486"><a href="#DuckDB.Generator-486"><span class="linenos">486</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span>
+</span><span id="DuckDB.Generator-487"><a href="#DuckDB.Generator-487"><span class="linenos">487</span></a> <span class="s2">&quot;sec&quot;</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;sec&quot;</span><span class="p">]</span> <span class="o">+</span> <span class="n">nano</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000000000.0</span><span class="p">)</span>
+</span><span id="DuckDB.Generator-488"><a href="#DuckDB.Generator-488"><span class="linenos">488</span></a> <span class="p">)</span>
+</span><span id="DuckDB.Generator-489"><a href="#DuckDB.Generator-489"><span class="linenos">489</span></a>
+</span><span id="DuckDB.Generator-490"><a href="#DuckDB.Generator-490"><span class="linenos">490</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_TIME&quot;</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
+</span><span id="DuckDB.Generator-491"><a href="#DuckDB.Generator-491"><span class="linenos">491</span></a>
+</span><span id="DuckDB.Generator-492"><a href="#DuckDB.Generator-492"><span class="linenos">492</span></a> <span class="k">def</span> <span class="nf">timestampfromparts_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="DuckDB.Generator-493"><a href="#DuckDB.Generator-493"><span class="linenos">493</span></a> <span class="n">sec</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;sec&quot;</span><span class="p">]</span>
+</span><span id="DuckDB.Generator-494"><a href="#DuckDB.Generator-494"><span class="linenos">494</span></a>
+</span><span id="DuckDB.Generator-495"><a href="#DuckDB.Generator-495"><span class="linenos">495</span></a> <span class="n">milli</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;milli&quot;</span><span class="p">)</span>
+</span><span id="DuckDB.Generator-496"><a href="#DuckDB.Generator-496"><span class="linenos">496</span></a> <span class="k">if</span> <span class="n">milli</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+</span><span id="DuckDB.Generator-497"><a href="#DuckDB.Generator-497"><span class="linenos">497</span></a> <span class="n">sec</span> <span class="o">+=</span> <span class="n">milli</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000.0</span><span class="p">)</span>
+</span><span id="DuckDB.Generator-498"><a href="#DuckDB.Generator-498"><span class="linenos">498</span></a>
+</span><span id="DuckDB.Generator-499"><a href="#DuckDB.Generator-499"><span class="linenos">499</span></a> <span class="n">nano</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nano&quot;</span><span class="p">)</span>
+</span><span id="DuckDB.Generator-500"><a href="#DuckDB.Generator-500"><span class="linenos">500</span></a> <span class="k">if</span> <span class="n">nano</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+</span><span id="DuckDB.Generator-501"><a href="#DuckDB.Generator-501"><span class="linenos">501</span></a> <span class="n">sec</span> <span class="o">+=</span> <span class="n">nano</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000000000.0</span><span class="p">)</span>
+</span><span id="DuckDB.Generator-502"><a href="#DuckDB.Generator-502"><span class="linenos">502</span></a>
+</span><span id="DuckDB.Generator-503"><a href="#DuckDB.Generator-503"><span class="linenos">503</span></a> <span class="k">if</span> <span class="n">milli</span> <span class="ow">or</span> <span class="n">nano</span><span class="p">:</span>
+</span><span id="DuckDB.Generator-504"><a href="#DuckDB.Generator-504"><span class="linenos">504</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;sec&quot;</span><span class="p">,</span> <span class="n">sec</span><span class="p">)</span>
+</span><span id="DuckDB.Generator-505"><a href="#DuckDB.Generator-505"><span class="linenos">505</span></a>
+</span><span id="DuckDB.Generator-506"><a href="#DuckDB.Generator-506"><span class="linenos">506</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_TIMESTAMP&quot;</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
+</span><span id="DuckDB.Generator-507"><a href="#DuckDB.Generator-507"><span class="linenos">507</span></a>
+</span><span id="DuckDB.Generator-508"><a href="#DuckDB.Generator-508"><span class="linenos">508</span></a> <span class="k">def</span> <span class="nf">tablesample_sql</span><span class="p">(</span>
+</span><span id="DuckDB.Generator-509"><a href="#DuckDB.Generator-509"><span class="linenos">509</span></a> <span class="bp">self</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-510"><a href="#DuckDB.Generator-510"><span class="linenos">510</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-511"><a href="#DuckDB.Generator-511"><span class="linenos">511</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot; AS &quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-512"><a href="#DuckDB.Generator-512"><span class="linenos">512</span></a> <span class="n">tablesample_keyword</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="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
+</span><span id="DuckDB.Generator-513"><a href="#DuckDB.Generator-513"><span class="linenos">513</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="DuckDB.Generator-514"><a href="#DuckDB.Generator-514"><span class="linenos">514</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span>
+</span><span id="DuckDB.Generator-515"><a href="#DuckDB.Generator-515"><span class="linenos">515</span></a> <span class="c1"># This sample clause only applies to a single source, not the entire resulting relation</span>
+</span><span id="DuckDB.Generator-516"><a href="#DuckDB.Generator-516"><span class="linenos">516</span></a> <span class="n">tablesample_keyword</span> <span class="o">=</span> <span class="s2">&quot;TABLESAMPLE&quot;</span>
+</span><span id="DuckDB.Generator-517"><a href="#DuckDB.Generator-517"><span class="linenos">517</span></a>
+</span><span id="DuckDB.Generator-518"><a href="#DuckDB.Generator-518"><span class="linenos">518</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">tablesample_sql</span><span class="p">(</span>
+</span><span id="DuckDB.Generator-519"><a href="#DuckDB.Generator-519"><span class="linenos">519</span></a> <span class="n">expression</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span> <span class="n">tablesample_keyword</span><span class="o">=</span><span class="n">tablesample_keyword</span>
+</span><span id="DuckDB.Generator-520"><a href="#DuckDB.Generator-520"><span class="linenos">520</span></a> <span class="p">)</span>
+</span><span id="DuckDB.Generator-521"><a href="#DuckDB.Generator-521"><span class="linenos">521</span></a>
+</span><span id="DuckDB.Generator-522"><a href="#DuckDB.Generator-522"><span class="linenos">522</span></a> <span class="k">def</span> <span class="nf">interval_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="DuckDB.Generator-523"><a href="#DuckDB.Generator-523"><span class="linenos">523</span></a> <span class="n">multiplier</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="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
+</span><span id="DuckDB.Generator-524"><a href="#DuckDB.Generator-524"><span class="linenos">524</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">&quot;unit&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
+</span><span id="DuckDB.Generator-525"><a href="#DuckDB.Generator-525"><span class="linenos">525</span></a>
+</span><span id="DuckDB.Generator-526"><a href="#DuckDB.Generator-526"><span class="linenos">526</span></a> <span class="k">if</span> <span class="n">unit</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;week&quot;</span><span class="p">):</span>
+</span><span id="DuckDB.Generator-527"><a href="#DuckDB.Generator-527"><span class="linenos">527</span></a> <span class="n">multiplier</span> <span class="o">=</span> <span class="mi">7</span>
+</span><span id="DuckDB.Generator-528"><a href="#DuckDB.Generator-528"><span class="linenos">528</span></a> <span class="k">if</span> <span class="n">unit</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;quarter&quot;</span><span class="p">):</span>
+</span><span id="DuckDB.Generator-529"><a href="#DuckDB.Generator-529"><span class="linenos">529</span></a> <span class="n">multiplier</span> <span class="o">=</span> <span class="mi">90</span>
+</span><span id="DuckDB.Generator-530"><a href="#DuckDB.Generator-530"><span class="linenos">530</span></a>
+</span><span id="DuckDB.Generator-531"><a href="#DuckDB.Generator-531"><span class="linenos">531</span></a> <span class="k">if</span> <span class="n">multiplier</span><span class="p">:</span>
+</span><span id="DuckDB.Generator-532"><a href="#DuckDB.Generator-532"><span class="linenos">532</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;(</span><span class="si">{</span><span class="n">multiplier</span><span class="si">}</span><span class="s2"> * </span><span class="si">{</span><span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s1">&#39;DAY&#39;</span><span class="p">)))</span><span class="si">}</span><span class="s2">)&quot;</span>
+</span><span id="DuckDB.Generator-533"><a href="#DuckDB.Generator-533"><span class="linenos">533</span></a>
+</span><span id="DuckDB.Generator-534"><a href="#DuckDB.Generator-534"><span class="linenos">534</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
+</span><span id="DuckDB.Generator-535"><a href="#DuckDB.Generator-535"><span class="linenos">535</span></a>
+</span><span id="DuckDB.Generator-536"><a href="#DuckDB.Generator-536"><span class="linenos">536</span></a> <span class="k">def</span> <span class="nf">columndef_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot; &quot;</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="DuckDB.Generator-537"><a href="#DuckDB.Generator-537"><span class="linenos">537</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UserDefinedFunction</span><span class="p">):</span>
+</span><span id="DuckDB.Generator-538"><a href="#DuckDB.Generator-538"><span class="linenos">538</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
+</span><span id="DuckDB.Generator-539"><a href="#DuckDB.Generator-539"><span class="linenos">539</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">columndef_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sep</span><span class="p">)</span>
+</span><span id="DuckDB.Generator-540"><a href="#DuckDB.Generator-540"><span class="linenos">540</span></a>
+</span><span id="DuckDB.Generator-541"><a href="#DuckDB.Generator-541"><span class="linenos">541</span></a> <span class="k">def</span> <span class="nf">placeholder_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="DuckDB.Generator-542"><a href="#DuckDB.Generator-542"><span class="linenos">542</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;$</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">&quot;?&quot;</span>
</span></pre></div>
@@ -2491,6 +2499,18 @@ Default: True</li>
</div>
+ <div id="DuckDB.Generator.MULTI_ARG_DISTINCT" class="classattr">
+ <div class="attr variable">
+ <span class="name">MULTI_ARG_DISTINCT</span> =
+<span class="default_value">False</span>
+
+
+ </div>
+ <a class="headerlink" href="#DuckDB.Generator.MULTI_ARG_DISTINCT"></a>
+
+
+
+ </div>
<div id="DuckDB.Generator.TRANSFORMS" class="classattr">
<div class="attr variable">
<span class="name">TRANSFORMS</span> =
@@ -2508,7 +2528,7 @@ Default: True</li>
<div class="attr variable">
<span class="name">SUPPORTED_JSON_PATH_PARTS</span> =
<input id="DuckDB.Generator.SUPPORTED_JSON_PATH_PARTS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
- <label class="view-value-button pdoc-button" for="DuckDB.Generator.SUPPORTED_JSON_PATH_PARTS-view-value"></label><span class="default_value">{&lt;class &#39;<a href="../expressions.html#JSONPathWildcard">sqlglot.expressions.JSONPathWildcard</a>&#39;&gt;, &lt;class &#39;<a href="../expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>&#39;&gt;, &lt;class &#39;<a href="../expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>&#39;&gt;, &lt;class &#39;<a href="../expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>&#39;&gt;}</span>
+ <label class="view-value-button pdoc-button" for="DuckDB.Generator.SUPPORTED_JSON_PATH_PARTS-view-value"></label><span class="default_value">{&lt;class &#39;<a href="../expressions.html#JSONPathSubscript">sqlglot.expressions.JSONPathSubscript</a>&#39;&gt;, &lt;class &#39;<a href="../expressions.html#JSONPathRoot">sqlglot.expressions.JSONPathRoot</a>&#39;&gt;, &lt;class &#39;<a href="../expressions.html#JSONPathKey">sqlglot.expressions.JSONPathKey</a>&#39;&gt;, &lt;class &#39;<a href="../expressions.html#JSONPathWildcard">sqlglot.expressions.JSONPathWildcard</a>&#39;&gt;}</span>
</div>
@@ -2579,14 +2599,14 @@ Default: True</li>
</div>
<a class="headerlink" href="#DuckDB.Generator.timefromparts_sql"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Generator.timefromparts_sql-482"><a href="#DuckDB.Generator.timefromparts_sql-482"><span class="linenos">482</span></a> <span class="k">def</span> <span class="nf">timefromparts_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="DuckDB.Generator.timefromparts_sql-483"><a href="#DuckDB.Generator.timefromparts_sql-483"><span class="linenos">483</span></a> <span class="n">nano</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nano&quot;</span><span class="p">)</span>
-</span><span id="DuckDB.Generator.timefromparts_sql-484"><a href="#DuckDB.Generator.timefromparts_sql-484"><span class="linenos">484</span></a> <span class="k">if</span> <span class="n">nano</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
-</span><span id="DuckDB.Generator.timefromparts_sql-485"><a href="#DuckDB.Generator.timefromparts_sql-485"><span class="linenos">485</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span>
-</span><span id="DuckDB.Generator.timefromparts_sql-486"><a href="#DuckDB.Generator.timefromparts_sql-486"><span class="linenos">486</span></a> <span class="s2">&quot;sec&quot;</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;sec&quot;</span><span class="p">]</span> <span class="o">+</span> <span class="n">nano</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000000000.0</span><span class="p">)</span>
-</span><span id="DuckDB.Generator.timefromparts_sql-487"><a href="#DuckDB.Generator.timefromparts_sql-487"><span class="linenos">487</span></a> <span class="p">)</span>
-</span><span id="DuckDB.Generator.timefromparts_sql-488"><a href="#DuckDB.Generator.timefromparts_sql-488"><span class="linenos">488</span></a>
-</span><span id="DuckDB.Generator.timefromparts_sql-489"><a href="#DuckDB.Generator.timefromparts_sql-489"><span class="linenos">489</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_TIME&quot;</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Generator.timefromparts_sql-483"><a href="#DuckDB.Generator.timefromparts_sql-483"><span class="linenos">483</span></a> <span class="k">def</span> <span class="nf">timefromparts_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimeFromParts</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="DuckDB.Generator.timefromparts_sql-484"><a href="#DuckDB.Generator.timefromparts_sql-484"><span class="linenos">484</span></a> <span class="n">nano</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nano&quot;</span><span class="p">)</span>
+</span><span id="DuckDB.Generator.timefromparts_sql-485"><a href="#DuckDB.Generator.timefromparts_sql-485"><span class="linenos">485</span></a> <span class="k">if</span> <span class="n">nano</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+</span><span id="DuckDB.Generator.timefromparts_sql-486"><a href="#DuckDB.Generator.timefromparts_sql-486"><span class="linenos">486</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span>
+</span><span id="DuckDB.Generator.timefromparts_sql-487"><a href="#DuckDB.Generator.timefromparts_sql-487"><span class="linenos">487</span></a> <span class="s2">&quot;sec&quot;</span><span class="p">,</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;sec&quot;</span><span class="p">]</span> <span class="o">+</span> <span class="n">nano</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000000000.0</span><span class="p">)</span>
+</span><span id="DuckDB.Generator.timefromparts_sql-488"><a href="#DuckDB.Generator.timefromparts_sql-488"><span class="linenos">488</span></a> <span class="p">)</span>
+</span><span id="DuckDB.Generator.timefromparts_sql-489"><a href="#DuckDB.Generator.timefromparts_sql-489"><span class="linenos">489</span></a>
+</span><span id="DuckDB.Generator.timefromparts_sql-490"><a href="#DuckDB.Generator.timefromparts_sql-490"><span class="linenos">490</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_TIME&quot;</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
</span></pre></div>
@@ -2604,21 +2624,21 @@ Default: True</li>
</div>
<a class="headerlink" href="#DuckDB.Generator.timestampfromparts_sql"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Generator.timestampfromparts_sql-491"><a href="#DuckDB.Generator.timestampfromparts_sql-491"><span class="linenos">491</span></a> <span class="k">def</span> <span class="nf">timestampfromparts_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="DuckDB.Generator.timestampfromparts_sql-492"><a href="#DuckDB.Generator.timestampfromparts_sql-492"><span class="linenos">492</span></a> <span class="n">sec</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;sec&quot;</span><span class="p">]</span>
-</span><span id="DuckDB.Generator.timestampfromparts_sql-493"><a href="#DuckDB.Generator.timestampfromparts_sql-493"><span class="linenos">493</span></a>
-</span><span id="DuckDB.Generator.timestampfromparts_sql-494"><a href="#DuckDB.Generator.timestampfromparts_sql-494"><span class="linenos">494</span></a> <span class="n">milli</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;milli&quot;</span><span class="p">)</span>
-</span><span id="DuckDB.Generator.timestampfromparts_sql-495"><a href="#DuckDB.Generator.timestampfromparts_sql-495"><span class="linenos">495</span></a> <span class="k">if</span> <span class="n">milli</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
-</span><span id="DuckDB.Generator.timestampfromparts_sql-496"><a href="#DuckDB.Generator.timestampfromparts_sql-496"><span class="linenos">496</span></a> <span class="n">sec</span> <span class="o">+=</span> <span class="n">milli</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000.0</span><span class="p">)</span>
-</span><span id="DuckDB.Generator.timestampfromparts_sql-497"><a href="#DuckDB.Generator.timestampfromparts_sql-497"><span class="linenos">497</span></a>
-</span><span id="DuckDB.Generator.timestampfromparts_sql-498"><a href="#DuckDB.Generator.timestampfromparts_sql-498"><span class="linenos">498</span></a> <span class="n">nano</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nano&quot;</span><span class="p">)</span>
-</span><span id="DuckDB.Generator.timestampfromparts_sql-499"><a href="#DuckDB.Generator.timestampfromparts_sql-499"><span class="linenos">499</span></a> <span class="k">if</span> <span class="n">nano</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
-</span><span id="DuckDB.Generator.timestampfromparts_sql-500"><a href="#DuckDB.Generator.timestampfromparts_sql-500"><span class="linenos">500</span></a> <span class="n">sec</span> <span class="o">+=</span> <span class="n">nano</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000000000.0</span><span class="p">)</span>
-</span><span id="DuckDB.Generator.timestampfromparts_sql-501"><a href="#DuckDB.Generator.timestampfromparts_sql-501"><span class="linenos">501</span></a>
-</span><span id="DuckDB.Generator.timestampfromparts_sql-502"><a href="#DuckDB.Generator.timestampfromparts_sql-502"><span class="linenos">502</span></a> <span class="k">if</span> <span class="n">milli</span> <span class="ow">or</span> <span class="n">nano</span><span class="p">:</span>
-</span><span id="DuckDB.Generator.timestampfromparts_sql-503"><a href="#DuckDB.Generator.timestampfromparts_sql-503"><span class="linenos">503</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;sec&quot;</span><span class="p">,</span> <span class="n">sec</span><span class="p">)</span>
-</span><span id="DuckDB.Generator.timestampfromparts_sql-504"><a href="#DuckDB.Generator.timestampfromparts_sql-504"><span class="linenos">504</span></a>
-</span><span id="DuckDB.Generator.timestampfromparts_sql-505"><a href="#DuckDB.Generator.timestampfromparts_sql-505"><span class="linenos">505</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_TIMESTAMP&quot;</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Generator.timestampfromparts_sql-492"><a href="#DuckDB.Generator.timestampfromparts_sql-492"><span class="linenos">492</span></a> <span class="k">def</span> <span class="nf">timestampfromparts_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampFromParts</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="DuckDB.Generator.timestampfromparts_sql-493"><a href="#DuckDB.Generator.timestampfromparts_sql-493"><span class="linenos">493</span></a> <span class="n">sec</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="p">[</span><span class="s2">&quot;sec&quot;</span><span class="p">]</span>
+</span><span id="DuckDB.Generator.timestampfromparts_sql-494"><a href="#DuckDB.Generator.timestampfromparts_sql-494"><span class="linenos">494</span></a>
+</span><span id="DuckDB.Generator.timestampfromparts_sql-495"><a href="#DuckDB.Generator.timestampfromparts_sql-495"><span class="linenos">495</span></a> <span class="n">milli</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;milli&quot;</span><span class="p">)</span>
+</span><span id="DuckDB.Generator.timestampfromparts_sql-496"><a href="#DuckDB.Generator.timestampfromparts_sql-496"><span class="linenos">496</span></a> <span class="k">if</span> <span class="n">milli</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+</span><span id="DuckDB.Generator.timestampfromparts_sql-497"><a href="#DuckDB.Generator.timestampfromparts_sql-497"><span class="linenos">497</span></a> <span class="n">sec</span> <span class="o">+=</span> <span class="n">milli</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000.0</span><span class="p">)</span>
+</span><span id="DuckDB.Generator.timestampfromparts_sql-498"><a href="#DuckDB.Generator.timestampfromparts_sql-498"><span class="linenos">498</span></a>
+</span><span id="DuckDB.Generator.timestampfromparts_sql-499"><a href="#DuckDB.Generator.timestampfromparts_sql-499"><span class="linenos">499</span></a> <span class="n">nano</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;nano&quot;</span><span class="p">)</span>
+</span><span id="DuckDB.Generator.timestampfromparts_sql-500"><a href="#DuckDB.Generator.timestampfromparts_sql-500"><span class="linenos">500</span></a> <span class="k">if</span> <span class="n">nano</span> <span class="ow">is</span> <span class="ow">not</span> <span class="kc">None</span><span class="p">:</span>
+</span><span id="DuckDB.Generator.timestampfromparts_sql-501"><a href="#DuckDB.Generator.timestampfromparts_sql-501"><span class="linenos">501</span></a> <span class="n">sec</span> <span class="o">+=</span> <span class="n">nano</span><span class="o">.</span><span class="n">pop</span><span class="p">()</span> <span class="o">/</span> <span class="n">exp</span><span class="o">.</span><span class="n">Literal</span><span class="o">.</span><span class="n">number</span><span class="p">(</span><span class="mf">1000000000.0</span><span class="p">)</span>
+</span><span id="DuckDB.Generator.timestampfromparts_sql-502"><a href="#DuckDB.Generator.timestampfromparts_sql-502"><span class="linenos">502</span></a>
+</span><span id="DuckDB.Generator.timestampfromparts_sql-503"><a href="#DuckDB.Generator.timestampfromparts_sql-503"><span class="linenos">503</span></a> <span class="k">if</span> <span class="n">milli</span> <span class="ow">or</span> <span class="n">nano</span><span class="p">:</span>
+</span><span id="DuckDB.Generator.timestampfromparts_sql-504"><a href="#DuckDB.Generator.timestampfromparts_sql-504"><span class="linenos">504</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;sec&quot;</span><span class="p">,</span> <span class="n">sec</span><span class="p">)</span>
+</span><span id="DuckDB.Generator.timestampfromparts_sql-505"><a href="#DuckDB.Generator.timestampfromparts_sql-505"><span class="linenos">505</span></a>
+</span><span id="DuckDB.Generator.timestampfromparts_sql-506"><a href="#DuckDB.Generator.timestampfromparts_sql-506"><span class="linenos">506</span></a> <span class="k">return</span> <span class="n">rename_func</span><span class="p">(</span><span class="s2">&quot;MAKE_TIMESTAMP&quot;</span><span class="p">)(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">)</span>
</span></pre></div>
@@ -2636,19 +2656,19 @@ Default: True</li>
</div>
<a class="headerlink" href="#DuckDB.Generator.tablesample_sql"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Generator.tablesample_sql-507"><a href="#DuckDB.Generator.tablesample_sql-507"><span class="linenos">507</span></a> <span class="k">def</span> <span class="nf">tablesample_sql</span><span class="p">(</span>
-</span><span id="DuckDB.Generator.tablesample_sql-508"><a href="#DuckDB.Generator.tablesample_sql-508"><span class="linenos">508</span></a> <span class="bp">self</span><span class="p">,</span>
-</span><span id="DuckDB.Generator.tablesample_sql-509"><a href="#DuckDB.Generator.tablesample_sql-509"><span class="linenos">509</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">,</span>
-</span><span id="DuckDB.Generator.tablesample_sql-510"><a href="#DuckDB.Generator.tablesample_sql-510"><span class="linenos">510</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot; AS &quot;</span><span class="p">,</span>
-</span><span id="DuckDB.Generator.tablesample_sql-511"><a href="#DuckDB.Generator.tablesample_sql-511"><span class="linenos">511</span></a> <span class="n">tablesample_keyword</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="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
-</span><span id="DuckDB.Generator.tablesample_sql-512"><a href="#DuckDB.Generator.tablesample_sql-512"><span class="linenos">512</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="DuckDB.Generator.tablesample_sql-513"><a href="#DuckDB.Generator.tablesample_sql-513"><span class="linenos">513</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span>
-</span><span id="DuckDB.Generator.tablesample_sql-514"><a href="#DuckDB.Generator.tablesample_sql-514"><span class="linenos">514</span></a> <span class="c1"># This sample clause only applies to a single source, not the entire resulting relation</span>
-</span><span id="DuckDB.Generator.tablesample_sql-515"><a href="#DuckDB.Generator.tablesample_sql-515"><span class="linenos">515</span></a> <span class="n">tablesample_keyword</span> <span class="o">=</span> <span class="s2">&quot;TABLESAMPLE&quot;</span>
-</span><span id="DuckDB.Generator.tablesample_sql-516"><a href="#DuckDB.Generator.tablesample_sql-516"><span class="linenos">516</span></a>
-</span><span id="DuckDB.Generator.tablesample_sql-517"><a href="#DuckDB.Generator.tablesample_sql-517"><span class="linenos">517</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">tablesample_sql</span><span class="p">(</span>
-</span><span id="DuckDB.Generator.tablesample_sql-518"><a href="#DuckDB.Generator.tablesample_sql-518"><span class="linenos">518</span></a> <span class="n">expression</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span> <span class="n">tablesample_keyword</span><span class="o">=</span><span class="n">tablesample_keyword</span>
-</span><span id="DuckDB.Generator.tablesample_sql-519"><a href="#DuckDB.Generator.tablesample_sql-519"><span class="linenos">519</span></a> <span class="p">)</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Generator.tablesample_sql-508"><a href="#DuckDB.Generator.tablesample_sql-508"><span class="linenos">508</span></a> <span class="k">def</span> <span class="nf">tablesample_sql</span><span class="p">(</span>
+</span><span id="DuckDB.Generator.tablesample_sql-509"><a href="#DuckDB.Generator.tablesample_sql-509"><span class="linenos">509</span></a> <span class="bp">self</span><span class="p">,</span>
+</span><span id="DuckDB.Generator.tablesample_sql-510"><a href="#DuckDB.Generator.tablesample_sql-510"><span class="linenos">510</span></a> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">,</span>
+</span><span id="DuckDB.Generator.tablesample_sql-511"><a href="#DuckDB.Generator.tablesample_sql-511"><span class="linenos">511</span></a> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot; AS &quot;</span><span class="p">,</span>
+</span><span id="DuckDB.Generator.tablesample_sql-512"><a href="#DuckDB.Generator.tablesample_sql-512"><span class="linenos">512</span></a> <span class="n">tablesample_keyword</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="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
+</span><span id="DuckDB.Generator.tablesample_sql-513"><a href="#DuckDB.Generator.tablesample_sql-513"><span class="linenos">513</span></a> <span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="DuckDB.Generator.tablesample_sql-514"><a href="#DuckDB.Generator.tablesample_sql-514"><span class="linenos">514</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">):</span>
+</span><span id="DuckDB.Generator.tablesample_sql-515"><a href="#DuckDB.Generator.tablesample_sql-515"><span class="linenos">515</span></a> <span class="c1"># This sample clause only applies to a single source, not the entire resulting relation</span>
+</span><span id="DuckDB.Generator.tablesample_sql-516"><a href="#DuckDB.Generator.tablesample_sql-516"><span class="linenos">516</span></a> <span class="n">tablesample_keyword</span> <span class="o">=</span> <span class="s2">&quot;TABLESAMPLE&quot;</span>
+</span><span id="DuckDB.Generator.tablesample_sql-517"><a href="#DuckDB.Generator.tablesample_sql-517"><span class="linenos">517</span></a>
+</span><span id="DuckDB.Generator.tablesample_sql-518"><a href="#DuckDB.Generator.tablesample_sql-518"><span class="linenos">518</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">tablesample_sql</span><span class="p">(</span>
+</span><span id="DuckDB.Generator.tablesample_sql-519"><a href="#DuckDB.Generator.tablesample_sql-519"><span class="linenos">519</span></a> <span class="n">expression</span><span class="p">,</span> <span class="n">sep</span><span class="o">=</span><span class="n">sep</span><span class="p">,</span> <span class="n">tablesample_keyword</span><span class="o">=</span><span class="n">tablesample_keyword</span>
+</span><span id="DuckDB.Generator.tablesample_sql-520"><a href="#DuckDB.Generator.tablesample_sql-520"><span class="linenos">520</span></a> <span class="p">)</span>
</span></pre></div>
@@ -2666,19 +2686,19 @@ Default: True</li>
</div>
<a class="headerlink" href="#DuckDB.Generator.interval_sql"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Generator.interval_sql-521"><a href="#DuckDB.Generator.interval_sql-521"><span class="linenos">521</span></a> <span class="k">def</span> <span class="nf">interval_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="DuckDB.Generator.interval_sql-522"><a href="#DuckDB.Generator.interval_sql-522"><span class="linenos">522</span></a> <span class="n">multiplier</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="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
-</span><span id="DuckDB.Generator.interval_sql-523"><a href="#DuckDB.Generator.interval_sql-523"><span class="linenos">523</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">&quot;unit&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
-</span><span id="DuckDB.Generator.interval_sql-524"><a href="#DuckDB.Generator.interval_sql-524"><span class="linenos">524</span></a>
-</span><span id="DuckDB.Generator.interval_sql-525"><a href="#DuckDB.Generator.interval_sql-525"><span class="linenos">525</span></a> <span class="k">if</span> <span class="n">unit</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;week&quot;</span><span class="p">):</span>
-</span><span id="DuckDB.Generator.interval_sql-526"><a href="#DuckDB.Generator.interval_sql-526"><span class="linenos">526</span></a> <span class="n">multiplier</span> <span class="o">=</span> <span class="mi">7</span>
-</span><span id="DuckDB.Generator.interval_sql-527"><a href="#DuckDB.Generator.interval_sql-527"><span class="linenos">527</span></a> <span class="k">if</span> <span class="n">unit</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;quarter&quot;</span><span class="p">):</span>
-</span><span id="DuckDB.Generator.interval_sql-528"><a href="#DuckDB.Generator.interval_sql-528"><span class="linenos">528</span></a> <span class="n">multiplier</span> <span class="o">=</span> <span class="mi">90</span>
-</span><span id="DuckDB.Generator.interval_sql-529"><a href="#DuckDB.Generator.interval_sql-529"><span class="linenos">529</span></a>
-</span><span id="DuckDB.Generator.interval_sql-530"><a href="#DuckDB.Generator.interval_sql-530"><span class="linenos">530</span></a> <span class="k">if</span> <span class="n">multiplier</span><span class="p">:</span>
-</span><span id="DuckDB.Generator.interval_sql-531"><a href="#DuckDB.Generator.interval_sql-531"><span class="linenos">531</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;(</span><span class="si">{</span><span class="n">multiplier</span><span class="si">}</span><span class="s2"> * </span><span class="si">{</span><span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s1">&#39;DAY&#39;</span><span class="p">)))</span><span class="si">}</span><span class="s2">)&quot;</span>
-</span><span id="DuckDB.Generator.interval_sql-532"><a href="#DuckDB.Generator.interval_sql-532"><span class="linenos">532</span></a>
-</span><span id="DuckDB.Generator.interval_sql-533"><a href="#DuckDB.Generator.interval_sql-533"><span class="linenos">533</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Generator.interval_sql-522"><a href="#DuckDB.Generator.interval_sql-522"><span class="linenos">522</span></a> <span class="k">def</span> <span class="nf">interval_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="DuckDB.Generator.interval_sql-523"><a href="#DuckDB.Generator.interval_sql-523"><span class="linenos">523</span></a> <span class="n">multiplier</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="nb">int</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>
+</span><span id="DuckDB.Generator.interval_sql-524"><a href="#DuckDB.Generator.interval_sql-524"><span class="linenos">524</span></a> <span class="n">unit</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">text</span><span class="p">(</span><span class="s2">&quot;unit&quot;</span><span class="p">)</span><span class="o">.</span><span class="n">lower</span><span class="p">()</span>
+</span><span id="DuckDB.Generator.interval_sql-525"><a href="#DuckDB.Generator.interval_sql-525"><span class="linenos">525</span></a>
+</span><span id="DuckDB.Generator.interval_sql-526"><a href="#DuckDB.Generator.interval_sql-526"><span class="linenos">526</span></a> <span class="k">if</span> <span class="n">unit</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;week&quot;</span><span class="p">):</span>
+</span><span id="DuckDB.Generator.interval_sql-527"><a href="#DuckDB.Generator.interval_sql-527"><span class="linenos">527</span></a> <span class="n">multiplier</span> <span class="o">=</span> <span class="mi">7</span>
+</span><span id="DuckDB.Generator.interval_sql-528"><a href="#DuckDB.Generator.interval_sql-528"><span class="linenos">528</span></a> <span class="k">if</span> <span class="n">unit</span><span class="o">.</span><span class="n">startswith</span><span class="p">(</span><span class="s2">&quot;quarter&quot;</span><span class="p">):</span>
+</span><span id="DuckDB.Generator.interval_sql-529"><a href="#DuckDB.Generator.interval_sql-529"><span class="linenos">529</span></a> <span class="n">multiplier</span> <span class="o">=</span> <span class="mi">90</span>
+</span><span id="DuckDB.Generator.interval_sql-530"><a href="#DuckDB.Generator.interval_sql-530"><span class="linenos">530</span></a>
+</span><span id="DuckDB.Generator.interval_sql-531"><a href="#DuckDB.Generator.interval_sql-531"><span class="linenos">531</span></a> <span class="k">if</span> <span class="n">multiplier</span><span class="p">:</span>
+</span><span id="DuckDB.Generator.interval_sql-532"><a href="#DuckDB.Generator.interval_sql-532"><span class="linenos">532</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;(</span><span class="si">{</span><span class="n">multiplier</span><span class="si">}</span><span class="s2"> * </span><span class="si">{</span><span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Interval</span><span class="p">(</span><span class="n">this</span><span class="o">=</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span><span class="w"> </span><span class="n">unit</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">var</span><span class="p">(</span><span class="s1">&#39;DAY&#39;</span><span class="p">)))</span><span class="si">}</span><span class="s2">)&quot;</span>
+</span><span id="DuckDB.Generator.interval_sql-533"><a href="#DuckDB.Generator.interval_sql-533"><span class="linenos">533</span></a>
+</span><span id="DuckDB.Generator.interval_sql-534"><a href="#DuckDB.Generator.interval_sql-534"><span class="linenos">534</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">interval_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span></pre></div>
@@ -2696,10 +2716,10 @@ Default: True</li>
</div>
<a class="headerlink" href="#DuckDB.Generator.columndef_sql"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Generator.columndef_sql-535"><a href="#DuckDB.Generator.columndef_sql-535"><span class="linenos">535</span></a> <span class="k">def</span> <span class="nf">columndef_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot; &quot;</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="DuckDB.Generator.columndef_sql-536"><a href="#DuckDB.Generator.columndef_sql-536"><span class="linenos">536</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UserDefinedFunction</span><span class="p">):</span>
-</span><span id="DuckDB.Generator.columndef_sql-537"><a href="#DuckDB.Generator.columndef_sql-537"><span class="linenos">537</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
-</span><span id="DuckDB.Generator.columndef_sql-538"><a href="#DuckDB.Generator.columndef_sql-538"><span class="linenos">538</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">columndef_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sep</span><span class="p">)</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Generator.columndef_sql-536"><a href="#DuckDB.Generator.columndef_sql-536"><span class="linenos">536</span></a> <span class="k">def</span> <span class="nf">columndef_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</span><span class="p">,</span> <span class="n">sep</span><span class="p">:</span> <span class="nb">str</span> <span class="o">=</span> <span class="s2">&quot; &quot;</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="DuckDB.Generator.columndef_sql-537"><a href="#DuckDB.Generator.columndef_sql-537"><span class="linenos">537</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">parent</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">UserDefinedFunction</span><span class="p">):</span>
+</span><span id="DuckDB.Generator.columndef_sql-538"><a href="#DuckDB.Generator.columndef_sql-538"><span class="linenos">538</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="s2">&quot;this&quot;</span><span class="p">)</span>
+</span><span id="DuckDB.Generator.columndef_sql-539"><a href="#DuckDB.Generator.columndef_sql-539"><span class="linenos">539</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">columndef_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">sep</span><span class="p">)</span>
</span></pre></div>
@@ -2717,8 +2737,8 @@ Default: True</li>
</div>
<a class="headerlink" href="#DuckDB.Generator.placeholder_sql"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Generator.placeholder_sql-540"><a href="#DuckDB.Generator.placeholder_sql-540"><span class="linenos">540</span></a> <span class="k">def</span> <span class="nf">placeholder_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="DuckDB.Generator.placeholder_sql-541"><a href="#DuckDB.Generator.placeholder_sql-541"><span class="linenos">541</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;$</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">&quot;?&quot;</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Generator.placeholder_sql-541"><a href="#DuckDB.Generator.placeholder_sql-541"><span class="linenos">541</span></a> <span class="k">def</span> <span class="nf">placeholder_sql</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Placeholder</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="DuckDB.Generator.placeholder_sql-542"><a href="#DuckDB.Generator.placeholder_sql-542"><span class="linenos">542</span></a> <span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;$</span><span class="si">{</span><span class="n">expression</span><span class="o">.</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">expression</span><span class="o">.</span><span class="n">name</span> <span class="k">else</span> <span class="s2">&quot;?&quot;</span>
</span></pre></div>