summaryrefslogtreecommitdiffstats
path: root/docs/sqlglot/dialects/postgres.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/sqlglot/dialects/postgres.html')
-rw-r--r--docs/sqlglot/dialects/postgres.html1295
1 files changed, 640 insertions, 655 deletions
diff --git a/docs/sqlglot/dialects/postgres.html b/docs/sqlglot/dialects/postgres.html
index 00d91ff..0d2289b 100644
--- a/docs/sqlglot/dialects/postgres.html
+++ b/docs/sqlglot/dialects/postgres.html
@@ -139,6 +139,9 @@
<a class="variable" href="#Postgres.Generator.TABLE_HINTS">TABLE_HINTS</a>
</li>
<li>
+ <a class="variable" href="#Postgres.Generator.QUERY_HINTS">QUERY_HINTS</a>
+ </li>
+ <li>
<a class="variable" href="#Postgres.Generator.PARAMETER_TOKEN">PARAMETER_TOKEN</a>
</li>
<li>
@@ -207,12 +210,6 @@
<li>
<a class="variable" href="#Postgres.Generator.BYTE_END">BYTE_END</a>
</li>
- <li>
- <a class="variable" href="#Postgres.Generator.RAW_START">RAW_START</a>
- </li>
- <li>
- <a class="variable" href="#Postgres.Generator.RAW_END">RAW_END</a>
- </li>
</ul>
</li>
@@ -267,12 +264,6 @@
<li>
<a class="variable" href="#Postgres.BYTE_END">BYTE_END</a>
</li>
- <li>
- <a class="variable" href="#Postgres.RAW_START">RAW_START</a>
- </li>
- <li>
- <a class="variable" href="#Postgres.RAW_END">RAW_END</a>
- </li>
</ul>
</li>
@@ -484,211 +475,235 @@
</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a> <span class="k">return</span> <span class="n">format_time_lambda</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</span><span class="p">,</span> <span class="s2">&quot;postgres&quot;</span><span class="p">)(</span><span class="n">args</span><span class="p">)</span>
</span><span id="L-184"><a href="#L-184"><span class="linenos">184</span></a>
</span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a>
-</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a><span class="k">class</span> <span class="nc">Postgres</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span>
-</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a> <span class="n">INDEX_OFFSET</span> <span class="o">=</span> <span class="mi">1</span>
-</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">&quot;nulls_are_large&quot;</span>
-</span><span id="L-189"><a href="#L-189"><span class="linenos">189</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;YYYY-MM-DD HH24:MI:SS&#39;&quot;</span>
-</span><span id="L-190"><a href="#L-190"><span class="linenos">190</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a> <span class="s2">&quot;AM&quot;</span><span class="p">:</span> <span class="s2">&quot;%p&quot;</span><span class="p">,</span>
-</span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a> <span class="s2">&quot;PM&quot;</span><span class="p">:</span> <span class="s2">&quot;%p&quot;</span><span class="p">,</span>
-</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="s2">&quot;D&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%u</span><span class="s2">&quot;</span><span class="p">,</span> <span class="c1"># 1-based day of week</span>
-</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a> <span class="s2">&quot;DD&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%d</span><span class="s2">&quot;</span><span class="p">,</span> <span class="c1"># day of month</span>
-</span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a> <span class="s2">&quot;DDD&quot;</span><span class="p">:</span> <span class="s2">&quot;%j&quot;</span><span class="p">,</span> <span class="c1"># zero padded day of year</span>
-</span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a> <span class="s2">&quot;FMDD&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%-d</span><span class="s2">&quot;</span><span class="p">,</span> <span class="c1"># - is no leading zero for Python; same for FM in postgres</span>
-</span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a> <span class="s2">&quot;FMDDD&quot;</span><span class="p">:</span> <span class="s2">&quot;%-j&quot;</span><span class="p">,</span> <span class="c1"># day of year</span>
-</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a> <span class="s2">&quot;FMHH12&quot;</span><span class="p">:</span> <span class="s2">&quot;%-I&quot;</span><span class="p">,</span> <span class="c1"># 9</span>
-</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a> <span class="s2">&quot;FMHH24&quot;</span><span class="p">:</span> <span class="s2">&quot;%-H&quot;</span><span class="p">,</span> <span class="c1"># 9</span>
-</span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a> <span class="s2">&quot;FMMI&quot;</span><span class="p">:</span> <span class="s2">&quot;%-M&quot;</span><span class="p">,</span> <span class="c1"># Minute</span>
-</span><span id="L-201"><a href="#L-201"><span class="linenos">201</span></a> <span class="s2">&quot;FMMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%-m&quot;</span><span class="p">,</span> <span class="c1"># 1</span>
-</span><span id="L-202"><a href="#L-202"><span class="linenos">202</span></a> <span class="s2">&quot;FMSS&quot;</span><span class="p">:</span> <span class="s2">&quot;%-S&quot;</span><span class="p">,</span> <span class="c1"># Second</span>
-</span><span id="L-203"><a href="#L-203"><span class="linenos">203</span></a> <span class="s2">&quot;HH12&quot;</span><span class="p">:</span> <span class="s2">&quot;%I&quot;</span><span class="p">,</span> <span class="c1"># 09</span>
-</span><span id="L-204"><a href="#L-204"><span class="linenos">204</span></a> <span class="s2">&quot;HH24&quot;</span><span class="p">:</span> <span class="s2">&quot;%H&quot;</span><span class="p">,</span> <span class="c1"># 09</span>
-</span><span id="L-205"><a href="#L-205"><span class="linenos">205</span></a> <span class="s2">&quot;MI&quot;</span><span class="p">:</span> <span class="s2">&quot;%M&quot;</span><span class="p">,</span> <span class="c1"># zero padded minute</span>
-</span><span id="L-206"><a href="#L-206"><span class="linenos">206</span></a> <span class="s2">&quot;MM&quot;</span><span class="p">:</span> <span class="s2">&quot;%m&quot;</span><span class="p">,</span> <span class="c1"># 01</span>
-</span><span id="L-207"><a href="#L-207"><span class="linenos">207</span></a> <span class="s2">&quot;OF&quot;</span><span class="p">:</span> <span class="s2">&quot;%z&quot;</span><span class="p">,</span> <span class="c1"># utc offset</span>
-</span><span id="L-208"><a href="#L-208"><span class="linenos">208</span></a> <span class="s2">&quot;SS&quot;</span><span class="p">:</span> <span class="s2">&quot;%S&quot;</span><span class="p">,</span> <span class="c1"># zero padded second</span>
-</span><span id="L-209"><a href="#L-209"><span class="linenos">209</span></a> <span class="s2">&quot;TMDay&quot;</span><span class="p">:</span> <span class="s2">&quot;%A&quot;</span><span class="p">,</span> <span class="c1"># TM is locale dependent</span>
-</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a> <span class="s2">&quot;TMDy&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%a</span><span class="s2">&quot;</span><span class="p">,</span>
-</span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a> <span class="s2">&quot;TMMon&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span> <span class="c1"># Sep</span>
-</span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a> <span class="s2">&quot;TMMonth&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&quot;</span><span class="p">,</span> <span class="c1"># September</span>
-</span><span id="L-213"><a href="#L-213"><span class="linenos">213</span></a> <span class="s2">&quot;TZ&quot;</span><span class="p">:</span> <span class="s2">&quot;%Z&quot;</span><span class="p">,</span> <span class="c1"># uppercase timezone name</span>
-</span><span id="L-214"><a href="#L-214"><span class="linenos">214</span></a> <span class="s2">&quot;US&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%f</span><span class="s2">&quot;</span><span class="p">,</span> <span class="c1"># zero padded microsecond</span>
-</span><span id="L-215"><a href="#L-215"><span class="linenos">215</span></a> <span class="s2">&quot;WW&quot;</span><span class="p">:</span> <span class="s2">&quot;%U&quot;</span><span class="p">,</span> <span class="c1"># 1-based week of year</span>
-</span><span id="L-216"><a href="#L-216"><span class="linenos">216</span></a> <span class="s2">&quot;YY&quot;</span><span class="p">:</span> <span class="s2">&quot;%y&quot;</span><span class="p">,</span> <span class="c1"># 15</span>
-</span><span id="L-217"><a href="#L-217"><span class="linenos">217</span></a> <span class="s2">&quot;YYYY&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span> <span class="c1"># 2015</span>
-</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a> <span class="p">}</span>
-</span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a>
-</span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span>
-</span><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;$$&quot;</span><span class="p">]</span>
-</span><span id="L-222"><a href="#L-222"><span class="linenos">222</span></a>
-</span><span id="L-223"><a href="#L-223"><span class="linenos">223</span></a> <span class="n">BIT_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;b&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;B&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">)]</span>
-</span><span id="L-224"><a href="#L-224"><span class="linenos">224</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;x&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;X&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">)]</span>
-</span><span id="L-225"><a href="#L-225"><span class="linenos">225</span></a> <span class="n">BYTE_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;e&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;E&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">)]</span>
-</span><span id="L-226"><a href="#L-226"><span class="linenos">226</span></a>
-</span><span id="L-227"><a href="#L-227"><span class="linenos">227</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="L-228"><a href="#L-228"><span class="linenos">228</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">,</span>
-</span><span id="L-229"><a href="#L-229"><span class="linenos">229</span></a> <span class="s2">&quot;~~&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span>
-</span><span id="L-230"><a href="#L-230"><span class="linenos">230</span></a> <span class="s2">&quot;~~*&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span>
-</span><span id="L-231"><a href="#L-231"><span class="linenos">231</span></a> <span class="s2">&quot;~*&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">,</span>
-</span><span id="L-232"><a href="#L-232"><span class="linenos">232</span></a> <span class="s2">&quot;~&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span>
-</span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a> <span class="s2">&quot;@&gt;&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">,</span>
-</span><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a> <span class="s2">&quot;&lt;@&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">,</span>
-</span><span id="L-235"><a href="#L-235"><span class="linenos">235</span></a> <span class="s2">&quot;BEGIN&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="L-236"><a href="#L-236"><span class="linenos">236</span></a> <span class="s2">&quot;BEGIN TRANSACTION&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span>
-</span><span id="L-237"><a href="#L-237"><span class="linenos">237</span></a> <span class="s2">&quot;BIGSERIAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">,</span>
-</span><span id="L-238"><a href="#L-238"><span class="linenos">238</span></a> <span class="s2">&quot;CHARACTER VARYING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span>
-</span><span id="L-239"><a href="#L-239"><span class="linenos">239</span></a> <span class="s2">&quot;DECLARE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="L-240"><a href="#L-240"><span class="linenos">240</span></a> <span class="s2">&quot;DO&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="L-241"><a href="#L-241"><span class="linenos">241</span></a> <span class="s2">&quot;HSTORE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HSTORE</span><span class="p">,</span>
-</span><span id="L-242"><a href="#L-242"><span class="linenos">242</span></a> <span class="s2">&quot;JSONB&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSONB</span><span class="p">,</span>
-</span><span id="L-243"><a href="#L-243"><span class="linenos">243</span></a> <span class="s2">&quot;REFRESH&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="L-244"><a href="#L-244"><span class="linenos">244</span></a> <span class="s2">&quot;REINDEX&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="L-245"><a href="#L-245"><span class="linenos">245</span></a> <span class="s2">&quot;RESET&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="L-246"><a href="#L-246"><span class="linenos">246</span></a> <span class="s2">&quot;REVOKE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="L-247"><a href="#L-247"><span class="linenos">247</span></a> <span class="s2">&quot;SERIAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">,</span>
-</span><span id="L-248"><a href="#L-248"><span class="linenos">248</span></a> <span class="s2">&quot;SMALLSERIAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">,</span>
-</span><span id="L-249"><a href="#L-249"><span class="linenos">249</span></a> <span class="s2">&quot;TEMP&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span>
-</span><span id="L-250"><a href="#L-250"><span class="linenos">250</span></a> <span class="s2">&quot;CSTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">,</span>
-</span><span id="L-251"><a href="#L-251"><span class="linenos">251</span></a> <span class="p">}</span>
-</span><span id="L-252"><a href="#L-252"><span class="linenos">252</span></a>
-</span><span id="L-253"><a href="#L-253"><span class="linenos">253</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="L-254"><a href="#L-254"><span class="linenos">254</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span>
-</span><span id="L-255"><a href="#L-255"><span class="linenos">255</span></a> <span class="s2">&quot;$&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span>
-</span><span id="L-256"><a href="#L-256"><span class="linenos">256</span></a> <span class="p">}</span>
-</span><span id="L-257"><a href="#L-257"><span class="linenos">257</span></a>
-</span><span id="L-258"><a href="#L-258"><span class="linenos">258</span></a> <span class="n">VAR_SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;$&quot;</span><span class="p">}</span>
-</span><span id="L-259"><a href="#L-259"><span class="linenos">259</span></a>
-</span><span id="L-260"><a href="#L-260"><span class="linenos">260</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span>
-</span><span id="L-261"><a href="#L-261"><span class="linenos">261</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span>
-</span><span id="L-262"><a href="#L-262"><span class="linenos">262</span></a> <span class="n">CONCAT_NULL_OUTPUTS_STRING</span> <span class="o">=</span> <span class="kc">True</span>
-</span><span id="L-263"><a href="#L-263"><span class="linenos">263</span></a>
-</span><span id="L-264"><a href="#L-264"><span class="linenos">264</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="L-265"><a href="#L-265"><span class="linenos">265</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="p">,</span>
-</span><span id="L-266"><a href="#L-266"><span class="linenos">266</span></a> <span class="s2">&quot;DATE_TRUNC&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">(</span>
-</span><span id="L-267"><a href="#L-267"><span class="linenos">267</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">unit</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
-</span><span id="L-268"><a href="#L-268"><span class="linenos">268</span></a> <span class="p">),</span>
-</span><span id="L-269"><a href="#L-269"><span class="linenos">269</span></a> <span class="s2">&quot;GENERATE_SERIES&quot;</span><span class="p">:</span> <span class="n">_generate_series</span><span class="p">,</span>
-</span><span id="L-270"><a href="#L-270"><span class="linenos">270</span></a> <span class="s2">&quot;NOW&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
-</span><span id="L-271"><a href="#L-271"><span class="linenos">271</span></a> <span class="s2">&quot;TO_CHAR&quot;</span><span class="p">:</span> <span class="n">format_time_lambda</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">,</span> <span class="s2">&quot;postgres&quot;</span><span class="p">),</span>
-</span><span id="L-272"><a href="#L-272"><span class="linenos">272</span></a> <span class="s2">&quot;TO_TIMESTAMP&quot;</span><span class="p">:</span> <span class="n">_to_timestamp</span><span class="p">,</span>
-</span><span id="L-273"><a href="#L-273"><span class="linenos">273</span></a> <span class="s2">&quot;UNNEST&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
+</span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a><span class="k">def</span> <span class="nf">_remove_target_from_merge</span><span class="p">(</span><span class="n">expression</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
+</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Remove table refs from columns in when statements.&quot;&quot;&quot;</span>
+</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</span><span class="p">):</span>
+</span><span id="L-189"><a href="#L-189"><span class="linenos">189</span></a> <span class="n">alias</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;alias&quot;</span><span class="p">)</span>
+</span><span id="L-190"><a href="#L-190"><span class="linenos">190</span></a>
+</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a> <span class="n">normalize</span> <span class="o">=</span> <span class="k">lambda</span> <span class="n">identifier</span><span class="p">:</span> <span class="n">Postgres</span><span class="o">.</span><span class="n">normalize_identifier</span><span class="p">(</span><span class="n">identifier</span><span class="p">)</span><span class="o">.</span><span class="n">name</span>
+</span><span id="L-192"><a href="#L-192"><span class="linenos">192</span></a>
+</span><span id="L-193"><a href="#L-193"><span class="linenos">193</span></a> <span class="n">targets</span> <span class="o">=</span> <span class="p">{</span><span class="n">normalize</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="o">.</span><span class="n">this</span><span class="p">)}</span>
+</span><span id="L-194"><a href="#L-194"><span class="linenos">194</span></a>
+</span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a> <span class="k">if</span> <span class="n">alias</span><span class="p">:</span>
+</span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a> <span class="n">targets</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">normalize</span><span class="p">(</span><span class="n">alias</span><span class="o">.</span><span class="n">this</span><span class="p">))</span>
+</span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a>
+</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a> <span class="k">for</span> <span class="n">when</span> <span class="ow">in</span> <span class="n">expression</span><span class="o">.</span><span class="n">expressions</span><span class="p">:</span>
+</span><span id="L-199"><a href="#L-199"><span class="linenos">199</span></a> <span class="n">when</span><span class="o">.</span><span class="n">transform</span><span class="p">(</span>
+</span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a> <span class="k">lambda</span> <span class="n">node</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">column</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
+</span><span id="L-201"><a href="#L-201"><span class="linenos">201</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">node</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Column</span><span class="p">)</span> <span class="ow">and</span> <span class="n">normalize</span><span class="p">(</span><span class="n">node</span><span class="o">.</span><span class="n">args</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">&quot;table&quot;</span><span class="p">))</span> <span class="ow">in</span> <span class="n">targets</span>
+</span><span id="L-202"><a href="#L-202"><span class="linenos">202</span></a> <span class="k">else</span> <span class="n">node</span><span class="p">,</span>
+</span><span id="L-203"><a href="#L-203"><span class="linenos">203</span></a> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+</span><span id="L-204"><a href="#L-204"><span class="linenos">204</span></a> <span class="p">)</span>
+</span><span id="L-205"><a href="#L-205"><span class="linenos">205</span></a>
+</span><span id="L-206"><a href="#L-206"><span class="linenos">206</span></a> <span class="k">return</span> <span class="n">expression</span>
+</span><span id="L-207"><a href="#L-207"><span class="linenos">207</span></a>
+</span><span id="L-208"><a href="#L-208"><span class="linenos">208</span></a>
+</span><span id="L-209"><a href="#L-209"><span class="linenos">209</span></a><span class="k">class</span> <span class="nc">Postgres</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span>
+</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a> <span class="n">INDEX_OFFSET</span> <span class="o">=</span> <span class="mi">1</span>
+</span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">&quot;nulls_are_large&quot;</span>
+</span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;YYYY-MM-DD HH24:MI:SS&#39;&quot;</span>
+</span><span id="L-213"><a href="#L-213"><span class="linenos">213</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="L-214"><a href="#L-214"><span class="linenos">214</span></a> <span class="s2">&quot;AM&quot;</span><span class="p">:</span> <span class="s2">&quot;%p&quot;</span><span class="p">,</span>
+</span><span id="L-215"><a href="#L-215"><span class="linenos">215</span></a> <span class="s2">&quot;PM&quot;</span><span class="p">:</span> <span class="s2">&quot;%p&quot;</span><span class="p">,</span>
+</span><span id="L-216"><a href="#L-216"><span class="linenos">216</span></a> <span class="s2">&quot;D&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%u</span><span class="s2">&quot;</span><span class="p">,</span> <span class="c1"># 1-based day of week</span>
+</span><span id="L-217"><a href="#L-217"><span class="linenos">217</span></a> <span class="s2">&quot;DD&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%d</span><span class="s2">&quot;</span><span class="p">,</span> <span class="c1"># day of month</span>
+</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a> <span class="s2">&quot;DDD&quot;</span><span class="p">:</span> <span class="s2">&quot;%j&quot;</span><span class="p">,</span> <span class="c1"># zero padded day of year</span>
+</span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a> <span class="s2">&quot;FMDD&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%-d</span><span class="s2">&quot;</span><span class="p">,</span> <span class="c1"># - is no leading zero for Python; same for FM in postgres</span>
+</span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> <span class="s2">&quot;FMDDD&quot;</span><span class="p">:</span> <span class="s2">&quot;%-j&quot;</span><span class="p">,</span> <span class="c1"># day of year</span>
+</span><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a> <span class="s2">&quot;FMHH12&quot;</span><span class="p">:</span> <span class="s2">&quot;%-I&quot;</span><span class="p">,</span> <span class="c1"># 9</span>
+</span><span id="L-222"><a href="#L-222"><span class="linenos">222</span></a> <span class="s2">&quot;FMHH24&quot;</span><span class="p">:</span> <span class="s2">&quot;%-H&quot;</span><span class="p">,</span> <span class="c1"># 9</span>
+</span><span id="L-223"><a href="#L-223"><span class="linenos">223</span></a> <span class="s2">&quot;FMMI&quot;</span><span class="p">:</span> <span class="s2">&quot;%-M&quot;</span><span class="p">,</span> <span class="c1"># Minute</span>
+</span><span id="L-224"><a href="#L-224"><span class="linenos">224</span></a> <span class="s2">&quot;FMMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%-m&quot;</span><span class="p">,</span> <span class="c1"># 1</span>
+</span><span id="L-225"><a href="#L-225"><span class="linenos">225</span></a> <span class="s2">&quot;FMSS&quot;</span><span class="p">:</span> <span class="s2">&quot;%-S&quot;</span><span class="p">,</span> <span class="c1"># Second</span>
+</span><span id="L-226"><a href="#L-226"><span class="linenos">226</span></a> <span class="s2">&quot;HH12&quot;</span><span class="p">:</span> <span class="s2">&quot;%I&quot;</span><span class="p">,</span> <span class="c1"># 09</span>
+</span><span id="L-227"><a href="#L-227"><span class="linenos">227</span></a> <span class="s2">&quot;HH24&quot;</span><span class="p">:</span> <span class="s2">&quot;%H&quot;</span><span class="p">,</span> <span class="c1"># 09</span>
+</span><span id="L-228"><a href="#L-228"><span class="linenos">228</span></a> <span class="s2">&quot;MI&quot;</span><span class="p">:</span> <span class="s2">&quot;%M&quot;</span><span class="p">,</span> <span class="c1"># zero padded minute</span>
+</span><span id="L-229"><a href="#L-229"><span class="linenos">229</span></a> <span class="s2">&quot;MM&quot;</span><span class="p">:</span> <span class="s2">&quot;%m&quot;</span><span class="p">,</span> <span class="c1"># 01</span>
+</span><span id="L-230"><a href="#L-230"><span class="linenos">230</span></a> <span class="s2">&quot;OF&quot;</span><span class="p">:</span> <span class="s2">&quot;%z&quot;</span><span class="p">,</span> <span class="c1"># utc offset</span>
+</span><span id="L-231"><a href="#L-231"><span class="linenos">231</span></a> <span class="s2">&quot;SS&quot;</span><span class="p">:</span> <span class="s2">&quot;%S&quot;</span><span class="p">,</span> <span class="c1"># zero padded second</span>
+</span><span id="L-232"><a href="#L-232"><span class="linenos">232</span></a> <span class="s2">&quot;TMDay&quot;</span><span class="p">:</span> <span class="s2">&quot;%A&quot;</span><span class="p">,</span> <span class="c1"># TM is locale dependent</span>
+</span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a> <span class="s2">&quot;TMDy&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%a</span><span class="s2">&quot;</span><span class="p">,</span>
+</span><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a> <span class="s2">&quot;TMMon&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span> <span class="c1"># Sep</span>
+</span><span id="L-235"><a href="#L-235"><span class="linenos">235</span></a> <span class="s2">&quot;TMMonth&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&quot;</span><span class="p">,</span> <span class="c1"># September</span>
+</span><span id="L-236"><a href="#L-236"><span class="linenos">236</span></a> <span class="s2">&quot;TZ&quot;</span><span class="p">:</span> <span class="s2">&quot;%Z&quot;</span><span class="p">,</span> <span class="c1"># uppercase timezone name</span>
+</span><span id="L-237"><a href="#L-237"><span class="linenos">237</span></a> <span class="s2">&quot;US&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%f</span><span class="s2">&quot;</span><span class="p">,</span> <span class="c1"># zero padded microsecond</span>
+</span><span id="L-238"><a href="#L-238"><span class="linenos">238</span></a> <span class="s2">&quot;WW&quot;</span><span class="p">:</span> <span class="s2">&quot;%U&quot;</span><span class="p">,</span> <span class="c1"># 1-based week of year</span>
+</span><span id="L-239"><a href="#L-239"><span class="linenos">239</span></a> <span class="s2">&quot;YY&quot;</span><span class="p">:</span> <span class="s2">&quot;%y&quot;</span><span class="p">,</span> <span class="c1"># 15</span>
+</span><span id="L-240"><a href="#L-240"><span class="linenos">240</span></a> <span class="s2">&quot;YYYY&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span> <span class="c1"># 2015</span>
+</span><span id="L-241"><a href="#L-241"><span class="linenos">241</span></a> <span class="p">}</span>
+</span><span id="L-242"><a href="#L-242"><span class="linenos">242</span></a>
+</span><span id="L-243"><a href="#L-243"><span class="linenos">243</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span>
+</span><span id="L-244"><a href="#L-244"><span class="linenos">244</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;$$&quot;</span><span class="p">]</span>
+</span><span id="L-245"><a href="#L-245"><span class="linenos">245</span></a>
+</span><span id="L-246"><a href="#L-246"><span class="linenos">246</span></a> <span class="n">BIT_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;b&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;B&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">)]</span>
+</span><span id="L-247"><a href="#L-247"><span class="linenos">247</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;x&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;X&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">)]</span>
+</span><span id="L-248"><a href="#L-248"><span class="linenos">248</span></a> <span class="n">BYTE_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;e&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;E&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">)]</span>
+</span><span id="L-249"><a href="#L-249"><span class="linenos">249</span></a>
+</span><span id="L-250"><a href="#L-250"><span class="linenos">250</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="L-251"><a href="#L-251"><span class="linenos">251</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">,</span>
+</span><span id="L-252"><a href="#L-252"><span class="linenos">252</span></a> <span class="s2">&quot;~~&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span>
+</span><span id="L-253"><a href="#L-253"><span class="linenos">253</span></a> <span class="s2">&quot;~~*&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span>
+</span><span id="L-254"><a href="#L-254"><span class="linenos">254</span></a> <span class="s2">&quot;~*&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">,</span>
+</span><span id="L-255"><a href="#L-255"><span class="linenos">255</span></a> <span class="s2">&quot;~&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span>
+</span><span id="L-256"><a href="#L-256"><span class="linenos">256</span></a> <span class="s2">&quot;@&gt;&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">,</span>
+</span><span id="L-257"><a href="#L-257"><span class="linenos">257</span></a> <span class="s2">&quot;&lt;@&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">,</span>
+</span><span id="L-258"><a href="#L-258"><span class="linenos">258</span></a> <span class="s2">&quot;BEGIN&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="L-259"><a href="#L-259"><span class="linenos">259</span></a> <span class="s2">&quot;BEGIN TRANSACTION&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span>
+</span><span id="L-260"><a href="#L-260"><span class="linenos">260</span></a> <span class="s2">&quot;BIGSERIAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">,</span>
+</span><span id="L-261"><a href="#L-261"><span class="linenos">261</span></a> <span class="s2">&quot;CHARACTER VARYING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span>
+</span><span id="L-262"><a href="#L-262"><span class="linenos">262</span></a> <span class="s2">&quot;DECLARE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="L-263"><a href="#L-263"><span class="linenos">263</span></a> <span class="s2">&quot;DO&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="L-264"><a href="#L-264"><span class="linenos">264</span></a> <span class="s2">&quot;HSTORE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HSTORE</span><span class="p">,</span>
+</span><span id="L-265"><a href="#L-265"><span class="linenos">265</span></a> <span class="s2">&quot;JSONB&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSONB</span><span class="p">,</span>
+</span><span id="L-266"><a href="#L-266"><span class="linenos">266</span></a> <span class="s2">&quot;REFRESH&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="L-267"><a href="#L-267"><span class="linenos">267</span></a> <span class="s2">&quot;REINDEX&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="L-268"><a href="#L-268"><span class="linenos">268</span></a> <span class="s2">&quot;RESET&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="L-269"><a href="#L-269"><span class="linenos">269</span></a> <span class="s2">&quot;REVOKE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="L-270"><a href="#L-270"><span class="linenos">270</span></a> <span class="s2">&quot;SERIAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">,</span>
+</span><span id="L-271"><a href="#L-271"><span class="linenos">271</span></a> <span class="s2">&quot;SMALLSERIAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">,</span>
+</span><span id="L-272"><a href="#L-272"><span class="linenos">272</span></a> <span class="s2">&quot;TEMP&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span>
+</span><span id="L-273"><a href="#L-273"><span class="linenos">273</span></a> <span class="s2">&quot;CSTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">,</span>
</span><span id="L-274"><a href="#L-274"><span class="linenos">274</span></a> <span class="p">}</span>
</span><span id="L-275"><a href="#L-275"><span class="linenos">275</span></a>
-</span><span id="L-276"><a href="#L-276"><span class="linenos">276</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="L-277"><a href="#L-277"><span class="linenos">277</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span>
-</span><span id="L-278"><a href="#L-278"><span class="linenos">278</span></a> <span class="s2">&quot;DATE_PART&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_date_part</span><span class="p">(),</span>
+</span><span id="L-276"><a href="#L-276"><span class="linenos">276</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="L-277"><a href="#L-277"><span class="linenos">277</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span>
+</span><span id="L-278"><a href="#L-278"><span class="linenos">278</span></a> <span class="s2">&quot;$&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span>
</span><span id="L-279"><a href="#L-279"><span class="linenos">279</span></a> <span class="p">}</span>
</span><span id="L-280"><a href="#L-280"><span class="linenos">280</span></a>
-</span><span id="L-281"><a href="#L-281"><span class="linenos">281</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="L-282"><a href="#L-282"><span class="linenos">282</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">,</span>
-</span><span id="L-283"><a href="#L-283"><span class="linenos">283</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">,</span>
-</span><span id="L-284"><a href="#L-284"><span class="linenos">284</span></a> <span class="p">}</span>
-</span><span id="L-285"><a href="#L-285"><span class="linenos">285</span></a>
-</span><span id="L-286"><a href="#L-286"><span class="linenos">286</span></a> <span class="n">EXPONENT</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="L-287"><a href="#L-287"><span class="linenos">287</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</span><span class="p">,</span>
-</span><span id="L-288"><a href="#L-288"><span class="linenos">288</span></a> <span class="p">}</span>
-</span><span id="L-289"><a href="#L-289"><span class="linenos">289</span></a>
-</span><span id="L-290"><a href="#L-290"><span class="linenos">290</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="L-291"><a href="#L-291"><span class="linenos">291</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span>
-</span><span id="L-292"><a href="#L-292"><span class="linenos">292</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAMP</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</span><span class="p">),</span>
-</span><span id="L-293"><a href="#L-293"><span class="linenos">293</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContains</span><span class="p">),</span>
-</span><span id="L-294"><a href="#L-294"><span class="linenos">294</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContained</span><span class="p">),</span>
-</span><span id="L-295"><a href="#L-295"><span class="linenos">295</span></a> <span class="p">}</span>
-</span><span id="L-296"><a href="#L-296"><span class="linenos">296</span></a>
-</span><span id="L-297"><a href="#L-297"><span class="linenos">297</span></a> <span class="k">def</span> <span class="nf">_parse_factor</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
-</span><span id="L-298"><a href="#L-298"><span class="linenos">298</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exponent</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">FACTOR</span><span class="p">)</span>
-</span><span id="L-299"><a href="#L-299"><span class="linenos">299</span></a>
-</span><span id="L-300"><a href="#L-300"><span class="linenos">300</span></a> <span class="k">def</span> <span class="nf">_parse_exponent</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
-</span><span id="L-301"><a href="#L-301"><span class="linenos">301</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPONENT</span><span class="p">)</span>
-</span><span id="L-302"><a href="#L-302"><span class="linenos">302</span></a>
-</span><span id="L-303"><a href="#L-303"><span class="linenos">303</span></a> <span class="k">def</span> <span class="nf">_parse_date_part</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
-</span><span id="L-304"><a href="#L-304"><span class="linenos">304</span></a> <span class="n">part</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span>
-</span><span id="L-305"><a href="#L-305"><span class="linenos">305</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span>
-</span><span id="L-306"><a href="#L-306"><span class="linenos">306</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span>
-</span><span id="L-307"><a href="#L-307"><span class="linenos">307</span></a>
-</span><span id="L-308"><a href="#L-308"><span class="linenos">308</span></a> <span class="k">if</span> <span class="n">part</span> <span class="ow">and</span> <span class="n">part</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span>
-</span><span id="L-309"><a href="#L-309"><span class="linenos">309</span></a> <span class="n">part</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="n">part</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
-</span><span id="L-310"><a href="#L-310"><span class="linenos">310</span></a>
-</span><span id="L-311"><a href="#L-311"><span class="linenos">311</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">part</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
+</span><span id="L-281"><a href="#L-281"><span class="linenos">281</span></a> <span class="n">VAR_SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;$&quot;</span><span class="p">}</span>
+</span><span id="L-282"><a href="#L-282"><span class="linenos">282</span></a>
+</span><span id="L-283"><a href="#L-283"><span class="linenos">283</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span>
+</span><span id="L-284"><a href="#L-284"><span class="linenos">284</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span>
+</span><span id="L-285"><a href="#L-285"><span class="linenos">285</span></a> <span class="n">CONCAT_NULL_OUTPUTS_STRING</span> <span class="o">=</span> <span class="kc">True</span>
+</span><span id="L-286"><a href="#L-286"><span class="linenos">286</span></a>
+</span><span id="L-287"><a href="#L-287"><span class="linenos">287</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="L-288"><a href="#L-288"><span class="linenos">288</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="p">,</span>
+</span><span id="L-289"><a href="#L-289"><span class="linenos">289</span></a> <span class="s2">&quot;DATE_TRUNC&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">(</span>
+</span><span id="L-290"><a href="#L-290"><span class="linenos">290</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">unit</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+</span><span id="L-291"><a href="#L-291"><span class="linenos">291</span></a> <span class="p">),</span>
+</span><span id="L-292"><a href="#L-292"><span class="linenos">292</span></a> <span class="s2">&quot;GENERATE_SERIES&quot;</span><span class="p">:</span> <span class="n">_generate_series</span><span class="p">,</span>
+</span><span id="L-293"><a href="#L-293"><span class="linenos">293</span></a> <span class="s2">&quot;NOW&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
+</span><span id="L-294"><a href="#L-294"><span class="linenos">294</span></a> <span class="s2">&quot;TO_CHAR&quot;</span><span class="p">:</span> <span class="n">format_time_lambda</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">,</span> <span class="s2">&quot;postgres&quot;</span><span class="p">),</span>
+</span><span id="L-295"><a href="#L-295"><span class="linenos">295</span></a> <span class="s2">&quot;TO_TIMESTAMP&quot;</span><span class="p">:</span> <span class="n">_to_timestamp</span><span class="p">,</span>
+</span><span id="L-296"><a href="#L-296"><span class="linenos">296</span></a> <span class="s2">&quot;UNNEST&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
+</span><span id="L-297"><a href="#L-297"><span class="linenos">297</span></a> <span class="p">}</span>
+</span><span id="L-298"><a href="#L-298"><span class="linenos">298</span></a>
+</span><span id="L-299"><a href="#L-299"><span class="linenos">299</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="L-300"><a href="#L-300"><span class="linenos">300</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span>
+</span><span id="L-301"><a href="#L-301"><span class="linenos">301</span></a> <span class="s2">&quot;DATE_PART&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_date_part</span><span class="p">(),</span>
+</span><span id="L-302"><a href="#L-302"><span class="linenos">302</span></a> <span class="p">}</span>
+</span><span id="L-303"><a href="#L-303"><span class="linenos">303</span></a>
+</span><span id="L-304"><a href="#L-304"><span class="linenos">304</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="L-305"><a href="#L-305"><span class="linenos">305</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">,</span>
+</span><span id="L-306"><a href="#L-306"><span class="linenos">306</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">,</span>
+</span><span id="L-307"><a href="#L-307"><span class="linenos">307</span></a> <span class="p">}</span>
+</span><span id="L-308"><a href="#L-308"><span class="linenos">308</span></a>
+</span><span id="L-309"><a href="#L-309"><span class="linenos">309</span></a> <span class="n">EXPONENT</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="L-310"><a href="#L-310"><span class="linenos">310</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</span><span class="p">,</span>
+</span><span id="L-311"><a href="#L-311"><span class="linenos">311</span></a> <span class="p">}</span>
</span><span id="L-312"><a href="#L-312"><span class="linenos">312</span></a>
-</span><span id="L-313"><a href="#L-313"><span class="linenos">313</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span>
-</span><span id="L-314"><a href="#L-314"><span class="linenos">314</span></a> <span class="n">SINGLE_STRING_INTERVAL</span> <span class="o">=</span> <span class="kc">True</span>
-</span><span id="L-315"><a href="#L-315"><span class="linenos">315</span></a> <span class="n">LOCKING_READS_SUPPORTED</span> <span class="o">=</span> <span class="kc">True</span>
-</span><span id="L-316"><a href="#L-316"><span class="linenos">316</span></a> <span class="n">JOIN_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
-</span><span id="L-317"><a href="#L-317"><span class="linenos">317</span></a> <span class="n">TABLE_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
-</span><span id="L-318"><a href="#L-318"><span class="linenos">318</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">&quot;$&quot;</span>
+</span><span id="L-313"><a href="#L-313"><span class="linenos">313</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="L-314"><a href="#L-314"><span class="linenos">314</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span>
+</span><span id="L-315"><a href="#L-315"><span class="linenos">315</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAMP</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</span><span class="p">),</span>
+</span><span id="L-316"><a href="#L-316"><span class="linenos">316</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContains</span><span class="p">),</span>
+</span><span id="L-317"><a href="#L-317"><span class="linenos">317</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContained</span><span class="p">),</span>
+</span><span id="L-318"><a href="#L-318"><span class="linenos">318</span></a> <span class="p">}</span>
</span><span id="L-319"><a href="#L-319"><span class="linenos">319</span></a>
-</span><span id="L-320"><a href="#L-320"><span class="linenos">320</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="L-321"><a href="#L-321"><span class="linenos">321</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-322"><a href="#L-322"><span class="linenos">322</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">TINYINT</span><span class="p">:</span> <span class="s2">&quot;SMALLINT&quot;</span><span class="p">,</span>
-</span><span id="L-323"><a href="#L-323"><span class="linenos">323</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-324"><a href="#L-324"><span class="linenos">324</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">DOUBLE</span><span class="p">:</span> <span class="s2">&quot;DOUBLE PRECISION&quot;</span><span class="p">,</span>
-</span><span id="L-325"><a href="#L-325"><span class="linenos">325</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;BYTEA&quot;</span><span class="p">,</span>
-</span><span id="L-326"><a href="#L-326"><span class="linenos">326</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;BYTEA&quot;</span><span class="p">,</span>
-</span><span id="L-327"><a href="#L-327"><span class="linenos">327</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">DATETIME</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP&quot;</span><span class="p">,</span>
-</span><span id="L-328"><a href="#L-328"><span class="linenos">328</span></a> <span class="p">}</span>
-</span><span id="L-329"><a href="#L-329"><span class="linenos">329</span></a>
-</span><span id="L-330"><a href="#L-330"><span class="linenos">330</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="L-331"><a href="#L-331"><span class="linenos">331</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-332"><a href="#L-332"><span class="linenos">332</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</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-333"><a href="#L-333"><span class="linenos">333</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</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">_auto_increment_to_serial</span><span class="p">,</span> <span class="n">_serial_to_generated</span><span class="p">]),</span>
-</span><span id="L-334"><a href="#L-334"><span class="linenos">334</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-335"><a href="#L-335"><span class="linenos">335</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-336"><a href="#L-336"><span class="linenos">336</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_scalar_sql</span><span class="p">,</span>
-</span><span id="L-337"><a href="#L-337"><span class="linenos">337</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</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;#&gt;&quot;</span><span class="p">),</span>
-</span><span id="L-338"><a href="#L-338"><span class="linenos">338</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</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;#&gt;&gt;&quot;</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">JSONBContains</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-340"><a href="#L-340"><span class="linenos">340</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</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-341"><a href="#L-341"><span class="linenos">341</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="n">no_paren_current_date_sql</span><span class="p">,</span>
-</span><span id="L-342"><a href="#L-342"><span class="linenos">342</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="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">&quot;CURRENT_TIMESTAMP&quot;</span><span class="p">,</span>
-</span><span id="L-343"><a href="#L-343"><span class="linenos">343</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">&quot;+&quot;</span><span class="p">),</span>
-</span><span id="L-344"><a href="#L-344"><span class="linenos">344</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-345"><a href="#L-345"><span class="linenos">345</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">&quot;-&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">DateDiff</span><span class="p">:</span> <span class="n">_date_diff_sql</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">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-348"><a href="#L-348"><span class="linenos">348</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-349"><a href="#L-349"><span class="linenos">349</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Max</span><span class="p">:</span> <span class="n">max_or_greatest</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">MapFromEntries</span><span class="p">:</span> <span class="n">no_map_from_entries_sql</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">Min</span><span class="p">:</span> <span class="n">min_or_least</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">ArrayOverlaps</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;&amp;&amp;&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">ArrayContains</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;@&gt;&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">ArrayContained</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;&lt;@&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">Merge</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">remove_target_from_merge</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">Pivot</span><span class="p">:</span> <span class="n">no_pivot_sql</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">RegexpLike</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-358"><a href="#L-358"><span class="linenos">358</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</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-359"><a href="#L-359"><span class="linenos">359</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-360"><a href="#L-360"><span class="linenos">360</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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;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-361"><a href="#L-361"><span class="linenos">361</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">:</span> <span class="n">_substring_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">TimestampTrunc</span><span class="p">:</span> <span class="n">timestamptrunc_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">TimeStrToTime</span><span class="p">:</span> <span class="n">timestrtotime_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">TimeToStr</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;TO_CHAR(</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-365"><a href="#L-365"><span class="linenos">365</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">:</span> <span class="n">no_tablesample_sql</span><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">ToChar</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">function_fallback_sql</span><span class="p">(</span><span class="n">e</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">Trim</span><span class="p">:</span> <span class="n">trim_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">TryCast</span><span class="p">:</span> <span class="n">no_trycast_sql</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">TsOrDsToDate</span><span class="p">:</span> <span class="n">ts_or_ds_to_date_sql</span><span class="p">(</span><span class="s2">&quot;postgres&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">UnixToTime</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;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">)&quot;</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">DataType</span><span class="p">:</span> <span class="n">_datatype_sql</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">GroupConcat</span><span class="p">:</span> <span class="n">_string_agg_sql</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">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="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">&#39;ARRAY&#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">sql</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 class="si">}</span><span class="s2">)&quot;</span>
-</span><span id="L-374"><a href="#L-374"><span class="linenos">374</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</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 class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span>
-</span><span id="L-375"><a href="#L-375"><span class="linenos">375</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">&#39;ARRAY&#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">expressions</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]&quot;</span><span class="p">,</span>
-</span><span id="L-376"><a href="#L-376"><span class="linenos">376</span></a> <span class="p">}</span>
-</span><span id="L-377"><a href="#L-377"><span class="linenos">377</span></a>
-</span><span id="L-378"><a href="#L-378"><span class="linenos">378</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="L-379"><a href="#L-379"><span class="linenos">379</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">PROPERTIES_LOCATION</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">TransientProperty</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 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">VolatileProperty</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 class="p">,</span>
-</span><span id="L-382"><a href="#L-382"><span class="linenos">382</span></a> <span class="p">}</span>
-</span><span id="L-383"><a href="#L-383"><span class="linenos">383</span></a>
-</span><span id="L-384"><a href="#L-384"><span class="linenos">384</span></a> <span class="k">def</span> <span class="nf">bracket_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">Bracket</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="L-385"><a href="#L-385"><span class="linenos">385</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Forms like ARRAY[1, 2, 3][3] aren&#39;t allowed; we need to wrap the ARRAY.&quot;&quot;&quot;</span>
-</span><span id="L-386"><a href="#L-386"><span class="linenos">386</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span>
-</span><span id="L-387"><a href="#L-387"><span class="linenos">387</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
-</span><span id="L-388"><a href="#L-388"><span class="linenos">388</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;this&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span>
-</span><span id="L-389"><a href="#L-389"><span class="linenos">389</span></a>
-</span><span id="L-390"><a href="#L-390"><span class="linenos">390</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
+</span><span id="L-320"><a href="#L-320"><span class="linenos">320</span></a> <span class="k">def</span> <span class="nf">_parse_factor</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
+</span><span id="L-321"><a href="#L-321"><span class="linenos">321</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exponent</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">FACTOR</span><span class="p">)</span>
+</span><span id="L-322"><a href="#L-322"><span class="linenos">322</span></a>
+</span><span id="L-323"><a href="#L-323"><span class="linenos">323</span></a> <span class="k">def</span> <span class="nf">_parse_exponent</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
+</span><span id="L-324"><a href="#L-324"><span class="linenos">324</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPONENT</span><span class="p">)</span>
+</span><span id="L-325"><a href="#L-325"><span class="linenos">325</span></a>
+</span><span id="L-326"><a href="#L-326"><span class="linenos">326</span></a> <span class="k">def</span> <span class="nf">_parse_date_part</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
+</span><span id="L-327"><a href="#L-327"><span class="linenos">327</span></a> <span class="n">part</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span>
+</span><span id="L-328"><a href="#L-328"><span class="linenos">328</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span>
+</span><span id="L-329"><a href="#L-329"><span class="linenos">329</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span>
+</span><span id="L-330"><a href="#L-330"><span class="linenos">330</span></a>
+</span><span id="L-331"><a href="#L-331"><span class="linenos">331</span></a> <span class="k">if</span> <span class="n">part</span> <span class="ow">and</span> <span class="n">part</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span>
+</span><span id="L-332"><a href="#L-332"><span class="linenos">332</span></a> <span class="n">part</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="n">part</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
+</span><span id="L-333"><a href="#L-333"><span class="linenos">333</span></a>
+</span><span id="L-334"><a href="#L-334"><span class="linenos">334</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">part</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
+</span><span id="L-335"><a href="#L-335"><span class="linenos">335</span></a>
+</span><span id="L-336"><a href="#L-336"><span class="linenos">336</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span>
+</span><span id="L-337"><a href="#L-337"><span class="linenos">337</span></a> <span class="n">SINGLE_STRING_INTERVAL</span> <span class="o">=</span> <span class="kc">True</span>
+</span><span id="L-338"><a href="#L-338"><span class="linenos">338</span></a> <span class="n">LOCKING_READS_SUPPORTED</span> <span class="o">=</span> <span class="kc">True</span>
+</span><span id="L-339"><a href="#L-339"><span class="linenos">339</span></a> <span class="n">JOIN_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
+</span><span id="L-340"><a href="#L-340"><span class="linenos">340</span></a> <span class="n">TABLE_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
+</span><span id="L-341"><a href="#L-341"><span class="linenos">341</span></a> <span class="n">QUERY_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
+</span><span id="L-342"><a href="#L-342"><span class="linenos">342</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">&quot;$&quot;</span>
+</span><span id="L-343"><a href="#L-343"><span class="linenos">343</span></a>
+</span><span id="L-344"><a href="#L-344"><span class="linenos">344</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="L-345"><a href="#L-345"><span class="linenos">345</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-346"><a href="#L-346"><span class="linenos">346</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">TINYINT</span><span class="p">:</span> <span class="s2">&quot;SMALLINT&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">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-348"><a href="#L-348"><span class="linenos">348</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">DOUBLE</span><span class="p">:</span> <span class="s2">&quot;DOUBLE PRECISION&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">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;BYTEA&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">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;BYTEA&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">DataType</span><span class="o">.</span><span class="n">Type</span><span class="o">.</span><span class="n">DATETIME</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP&quot;</span><span class="p">,</span>
+</span><span id="L-352"><a href="#L-352"><span class="linenos">352</span></a> <span class="p">}</span>
+</span><span id="L-353"><a href="#L-353"><span class="linenos">353</span></a>
+</span><span id="L-354"><a href="#L-354"><span class="linenos">354</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="L-355"><a href="#L-355"><span class="linenos">355</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-356"><a href="#L-356"><span class="linenos">356</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</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-357"><a href="#L-357"><span class="linenos">357</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</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">_auto_increment_to_serial</span><span class="p">,</span> <span class="n">_serial_to_generated</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">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-359"><a href="#L-359"><span class="linenos">359</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-360"><a href="#L-360"><span class="linenos">360</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_scalar_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">JSONBExtract</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;#&gt;&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">JSONBExtractScalar</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;#&gt;&gt;&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">JSONBContains</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-364"><a href="#L-364"><span class="linenos">364</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</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-365"><a href="#L-365"><span class="linenos">365</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="n">no_paren_current_date_sql</span><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">CurrentTimestamp</span><span class="p">:</span> <span class="k">lambda</span> <span class="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">&quot;CURRENT_TIMESTAMP&quot;</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">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">&quot;+&quot;</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">DateStrToDate</span><span class="p">:</span> <span class="n">datestrtodate_sql</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">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">&quot;-&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">DateDiff</span><span class="p">:</span> <span class="n">_date_diff_sql</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">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-372"><a href="#L-372"><span class="linenos">372</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-373"><a href="#L-373"><span class="linenos">373</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Max</span><span class="p">:</span> <span class="n">max_or_greatest</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">MapFromEntries</span><span class="p">:</span> <span class="n">no_map_from_entries_sql</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">Min</span><span class="p">:</span> <span class="n">min_or_least</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">ArrayOverlaps</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;&amp;&amp;&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">ArrayContains</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;@&gt;&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">ArrayContained</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;&lt;@&quot;</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">Merge</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">_remove_target_from_merge</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">Pivot</span><span class="p">:</span> <span class="n">no_pivot_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">RegexpLike</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-382"><a href="#L-382"><span class="linenos">382</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</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-383"><a href="#L-383"><span class="linenos">383</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-384"><a href="#L-384"><span class="linenos">384</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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;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-385"><a href="#L-385"><span class="linenos">385</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">:</span> <span class="n">_substring_sql</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">TimestampTrunc</span><span class="p">:</span> <span class="n">timestamptrunc_sql</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">TimeStrToTime</span><span class="p">:</span> <span class="n">timestrtotime_sql</span><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">TimeToStr</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;TO_CHAR(</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-389"><a href="#L-389"><span class="linenos">389</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">:</span> <span class="n">no_tablesample_sql</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">ToChar</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">function_fallback_sql</span><span class="p">(</span><span class="n">e</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">Trim</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">,</span>
+</span><span id="L-392"><a href="#L-392"><span class="linenos">392</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">no_trycast_sql</span><span class="p">,</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">TsOrDsToDate</span><span class="p">:</span> <span class="n">ts_or_ds_to_date_sql</span><span class="p">(</span><span class="s2">&quot;postgres&quot;</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">UnixToTime</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;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">)&quot;</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">DataType</span><span class="p">:</span> <span class="n">_datatype_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">GroupConcat</span><span class="p">:</span> <span class="n">_string_agg_sql</span><span class="p">,</span>
+</span><span id="L-397"><a href="#L-397"><span class="linenos">397</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="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">&#39;ARRAY&#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">sql</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 class="si">}</span><span class="s2">)&quot;</span>
+</span><span id="L-398"><a href="#L-398"><span class="linenos">398</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</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 class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span>
+</span><span id="L-399"><a href="#L-399"><span class="linenos">399</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">&#39;ARRAY&#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">expressions</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]&quot;</span><span class="p">,</span>
+</span><span id="L-400"><a href="#L-400"><span class="linenos">400</span></a> <span class="p">}</span>
+</span><span id="L-401"><a href="#L-401"><span class="linenos">401</span></a>
+</span><span id="L-402"><a href="#L-402"><span class="linenos">402</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="L-403"><a href="#L-403"><span class="linenos">403</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">PROPERTIES_LOCATION</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">TransientProperty</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 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">VolatileProperty</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 class="p">,</span>
+</span><span id="L-406"><a href="#L-406"><span class="linenos">406</span></a> <span class="p">}</span>
+</span><span id="L-407"><a href="#L-407"><span class="linenos">407</span></a>
+</span><span id="L-408"><a href="#L-408"><span class="linenos">408</span></a> <span class="k">def</span> <span class="nf">bracket_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">Bracket</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="L-409"><a href="#L-409"><span class="linenos">409</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Forms like ARRAY[1, 2, 3][3] aren&#39;t allowed; we need to wrap the ARRAY.&quot;&quot;&quot;</span>
+</span><span id="L-410"><a href="#L-410"><span class="linenos">410</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span>
+</span><span id="L-411"><a href="#L-411"><span class="linenos">411</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
+</span><span id="L-412"><a href="#L-412"><span class="linenos">412</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;this&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span>
+</span><span id="L-413"><a href="#L-413"><span class="linenos">413</span></a>
+</span><span id="L-414"><a href="#L-414"><span class="linenos">414</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span></pre></div>
@@ -717,211 +732,212 @@
</div>
<a class="headerlink" href="#Postgres"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres-187"><a href="#Postgres-187"><span class="linenos">187</span></a><span class="k">class</span> <span class="nc">Postgres</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span>
-</span><span id="Postgres-188"><a href="#Postgres-188"><span class="linenos">188</span></a> <span class="n">INDEX_OFFSET</span> <span class="o">=</span> <span class="mi">1</span>
-</span><span id="Postgres-189"><a href="#Postgres-189"><span class="linenos">189</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">&quot;nulls_are_large&quot;</span>
-</span><span id="Postgres-190"><a href="#Postgres-190"><span class="linenos">190</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;YYYY-MM-DD HH24:MI:SS&#39;&quot;</span>
-</span><span id="Postgres-191"><a href="#Postgres-191"><span class="linenos">191</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres-192"><a href="#Postgres-192"><span class="linenos">192</span></a> <span class="s2">&quot;AM&quot;</span><span class="p">:</span> <span class="s2">&quot;%p&quot;</span><span class="p">,</span>
-</span><span id="Postgres-193"><a href="#Postgres-193"><span class="linenos">193</span></a> <span class="s2">&quot;PM&quot;</span><span class="p">:</span> <span class="s2">&quot;%p&quot;</span><span class="p">,</span>
-</span><span id="Postgres-194"><a href="#Postgres-194"><span class="linenos">194</span></a> <span class="s2">&quot;D&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%u</span><span class="s2">&quot;</span><span class="p">,</span> <span class="c1"># 1-based day of week</span>
-</span><span id="Postgres-195"><a href="#Postgres-195"><span class="linenos">195</span></a> <span class="s2">&quot;DD&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%d</span><span class="s2">&quot;</span><span class="p">,</span> <span class="c1"># day of month</span>
-</span><span id="Postgres-196"><a href="#Postgres-196"><span class="linenos">196</span></a> <span class="s2">&quot;DDD&quot;</span><span class="p">:</span> <span class="s2">&quot;%j&quot;</span><span class="p">,</span> <span class="c1"># zero padded day of year</span>
-</span><span id="Postgres-197"><a href="#Postgres-197"><span class="linenos">197</span></a> <span class="s2">&quot;FMDD&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%-d</span><span class="s2">&quot;</span><span class="p">,</span> <span class="c1"># - is no leading zero for Python; same for FM in postgres</span>
-</span><span id="Postgres-198"><a href="#Postgres-198"><span class="linenos">198</span></a> <span class="s2">&quot;FMDDD&quot;</span><span class="p">:</span> <span class="s2">&quot;%-j&quot;</span><span class="p">,</span> <span class="c1"># day of year</span>
-</span><span id="Postgres-199"><a href="#Postgres-199"><span class="linenos">199</span></a> <span class="s2">&quot;FMHH12&quot;</span><span class="p">:</span> <span class="s2">&quot;%-I&quot;</span><span class="p">,</span> <span class="c1"># 9</span>
-</span><span id="Postgres-200"><a href="#Postgres-200"><span class="linenos">200</span></a> <span class="s2">&quot;FMHH24&quot;</span><span class="p">:</span> <span class="s2">&quot;%-H&quot;</span><span class="p">,</span> <span class="c1"># 9</span>
-</span><span id="Postgres-201"><a href="#Postgres-201"><span class="linenos">201</span></a> <span class="s2">&quot;FMMI&quot;</span><span class="p">:</span> <span class="s2">&quot;%-M&quot;</span><span class="p">,</span> <span class="c1"># Minute</span>
-</span><span id="Postgres-202"><a href="#Postgres-202"><span class="linenos">202</span></a> <span class="s2">&quot;FMMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%-m&quot;</span><span class="p">,</span> <span class="c1"># 1</span>
-</span><span id="Postgres-203"><a href="#Postgres-203"><span class="linenos">203</span></a> <span class="s2">&quot;FMSS&quot;</span><span class="p">:</span> <span class="s2">&quot;%-S&quot;</span><span class="p">,</span> <span class="c1"># Second</span>
-</span><span id="Postgres-204"><a href="#Postgres-204"><span class="linenos">204</span></a> <span class="s2">&quot;HH12&quot;</span><span class="p">:</span> <span class="s2">&quot;%I&quot;</span><span class="p">,</span> <span class="c1"># 09</span>
-</span><span id="Postgres-205"><a href="#Postgres-205"><span class="linenos">205</span></a> <span class="s2">&quot;HH24&quot;</span><span class="p">:</span> <span class="s2">&quot;%H&quot;</span><span class="p">,</span> <span class="c1"># 09</span>
-</span><span id="Postgres-206"><a href="#Postgres-206"><span class="linenos">206</span></a> <span class="s2">&quot;MI&quot;</span><span class="p">:</span> <span class="s2">&quot;%M&quot;</span><span class="p">,</span> <span class="c1"># zero padded minute</span>
-</span><span id="Postgres-207"><a href="#Postgres-207"><span class="linenos">207</span></a> <span class="s2">&quot;MM&quot;</span><span class="p">:</span> <span class="s2">&quot;%m&quot;</span><span class="p">,</span> <span class="c1"># 01</span>
-</span><span id="Postgres-208"><a href="#Postgres-208"><span class="linenos">208</span></a> <span class="s2">&quot;OF&quot;</span><span class="p">:</span> <span class="s2">&quot;%z&quot;</span><span class="p">,</span> <span class="c1"># utc offset</span>
-</span><span id="Postgres-209"><a href="#Postgres-209"><span class="linenos">209</span></a> <span class="s2">&quot;SS&quot;</span><span class="p">:</span> <span class="s2">&quot;%S&quot;</span><span class="p">,</span> <span class="c1"># zero padded second</span>
-</span><span id="Postgres-210"><a href="#Postgres-210"><span class="linenos">210</span></a> <span class="s2">&quot;TMDay&quot;</span><span class="p">:</span> <span class="s2">&quot;%A&quot;</span><span class="p">,</span> <span class="c1"># TM is locale dependent</span>
-</span><span id="Postgres-211"><a href="#Postgres-211"><span class="linenos">211</span></a> <span class="s2">&quot;TMDy&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%a</span><span class="s2">&quot;</span><span class="p">,</span>
-</span><span id="Postgres-212"><a href="#Postgres-212"><span class="linenos">212</span></a> <span class="s2">&quot;TMMon&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span> <span class="c1"># Sep</span>
-</span><span id="Postgres-213"><a href="#Postgres-213"><span class="linenos">213</span></a> <span class="s2">&quot;TMMonth&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&quot;</span><span class="p">,</span> <span class="c1"># September</span>
-</span><span id="Postgres-214"><a href="#Postgres-214"><span class="linenos">214</span></a> <span class="s2">&quot;TZ&quot;</span><span class="p">:</span> <span class="s2">&quot;%Z&quot;</span><span class="p">,</span> <span class="c1"># uppercase timezone name</span>
-</span><span id="Postgres-215"><a href="#Postgres-215"><span class="linenos">215</span></a> <span class="s2">&quot;US&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%f</span><span class="s2">&quot;</span><span class="p">,</span> <span class="c1"># zero padded microsecond</span>
-</span><span id="Postgres-216"><a href="#Postgres-216"><span class="linenos">216</span></a> <span class="s2">&quot;WW&quot;</span><span class="p">:</span> <span class="s2">&quot;%U&quot;</span><span class="p">,</span> <span class="c1"># 1-based week of year</span>
-</span><span id="Postgres-217"><a href="#Postgres-217"><span class="linenos">217</span></a> <span class="s2">&quot;YY&quot;</span><span class="p">:</span> <span class="s2">&quot;%y&quot;</span><span class="p">,</span> <span class="c1"># 15</span>
-</span><span id="Postgres-218"><a href="#Postgres-218"><span class="linenos">218</span></a> <span class="s2">&quot;YYYY&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span> <span class="c1"># 2015</span>
-</span><span id="Postgres-219"><a href="#Postgres-219"><span class="linenos">219</span></a> <span class="p">}</span>
-</span><span id="Postgres-220"><a href="#Postgres-220"><span class="linenos">220</span></a>
-</span><span id="Postgres-221"><a href="#Postgres-221"><span class="linenos">221</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span>
-</span><span id="Postgres-222"><a href="#Postgres-222"><span class="linenos">222</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;$$&quot;</span><span class="p">]</span>
-</span><span id="Postgres-223"><a href="#Postgres-223"><span class="linenos">223</span></a>
-</span><span id="Postgres-224"><a href="#Postgres-224"><span class="linenos">224</span></a> <span class="n">BIT_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;b&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;B&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">)]</span>
-</span><span id="Postgres-225"><a href="#Postgres-225"><span class="linenos">225</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;x&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;X&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">)]</span>
-</span><span id="Postgres-226"><a href="#Postgres-226"><span class="linenos">226</span></a> <span class="n">BYTE_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;e&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;E&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">)]</span>
-</span><span id="Postgres-227"><a href="#Postgres-227"><span class="linenos">227</span></a>
-</span><span id="Postgres-228"><a href="#Postgres-228"><span class="linenos">228</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres-229"><a href="#Postgres-229"><span class="linenos">229</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">,</span>
-</span><span id="Postgres-230"><a href="#Postgres-230"><span class="linenos">230</span></a> <span class="s2">&quot;~~&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span>
-</span><span id="Postgres-231"><a href="#Postgres-231"><span class="linenos">231</span></a> <span class="s2">&quot;~~*&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span>
-</span><span id="Postgres-232"><a href="#Postgres-232"><span class="linenos">232</span></a> <span class="s2">&quot;~*&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">,</span>
-</span><span id="Postgres-233"><a href="#Postgres-233"><span class="linenos">233</span></a> <span class="s2">&quot;~&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span>
-</span><span id="Postgres-234"><a href="#Postgres-234"><span class="linenos">234</span></a> <span class="s2">&quot;@&gt;&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">,</span>
-</span><span id="Postgres-235"><a href="#Postgres-235"><span class="linenos">235</span></a> <span class="s2">&quot;&lt;@&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">,</span>
-</span><span id="Postgres-236"><a href="#Postgres-236"><span class="linenos">236</span></a> <span class="s2">&quot;BEGIN&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="Postgres-237"><a href="#Postgres-237"><span class="linenos">237</span></a> <span class="s2">&quot;BEGIN TRANSACTION&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span>
-</span><span id="Postgres-238"><a href="#Postgres-238"><span class="linenos">238</span></a> <span class="s2">&quot;BIGSERIAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">,</span>
-</span><span id="Postgres-239"><a href="#Postgres-239"><span class="linenos">239</span></a> <span class="s2">&quot;CHARACTER VARYING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span>
-</span><span id="Postgres-240"><a href="#Postgres-240"><span class="linenos">240</span></a> <span class="s2">&quot;DECLARE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="Postgres-241"><a href="#Postgres-241"><span class="linenos">241</span></a> <span class="s2">&quot;DO&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="Postgres-242"><a href="#Postgres-242"><span class="linenos">242</span></a> <span class="s2">&quot;HSTORE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HSTORE</span><span class="p">,</span>
-</span><span id="Postgres-243"><a href="#Postgres-243"><span class="linenos">243</span></a> <span class="s2">&quot;JSONB&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSONB</span><span class="p">,</span>
-</span><span id="Postgres-244"><a href="#Postgres-244"><span class="linenos">244</span></a> <span class="s2">&quot;REFRESH&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="Postgres-245"><a href="#Postgres-245"><span class="linenos">245</span></a> <span class="s2">&quot;REINDEX&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="Postgres-246"><a href="#Postgres-246"><span class="linenos">246</span></a> <span class="s2">&quot;RESET&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="Postgres-247"><a href="#Postgres-247"><span class="linenos">247</span></a> <span class="s2">&quot;REVOKE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="Postgres-248"><a href="#Postgres-248"><span class="linenos">248</span></a> <span class="s2">&quot;SERIAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">,</span>
-</span><span id="Postgres-249"><a href="#Postgres-249"><span class="linenos">249</span></a> <span class="s2">&quot;SMALLSERIAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">,</span>
-</span><span id="Postgres-250"><a href="#Postgres-250"><span class="linenos">250</span></a> <span class="s2">&quot;TEMP&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span>
-</span><span id="Postgres-251"><a href="#Postgres-251"><span class="linenos">251</span></a> <span class="s2">&quot;CSTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">,</span>
-</span><span id="Postgres-252"><a href="#Postgres-252"><span class="linenos">252</span></a> <span class="p">}</span>
-</span><span id="Postgres-253"><a href="#Postgres-253"><span class="linenos">253</span></a>
-</span><span id="Postgres-254"><a href="#Postgres-254"><span class="linenos">254</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres-255"><a href="#Postgres-255"><span class="linenos">255</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span>
-</span><span id="Postgres-256"><a href="#Postgres-256"><span class="linenos">256</span></a> <span class="s2">&quot;$&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span>
-</span><span id="Postgres-257"><a href="#Postgres-257"><span class="linenos">257</span></a> <span class="p">}</span>
-</span><span id="Postgres-258"><a href="#Postgres-258"><span class="linenos">258</span></a>
-</span><span id="Postgres-259"><a href="#Postgres-259"><span class="linenos">259</span></a> <span class="n">VAR_SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;$&quot;</span><span class="p">}</span>
-</span><span id="Postgres-260"><a href="#Postgres-260"><span class="linenos">260</span></a>
-</span><span id="Postgres-261"><a href="#Postgres-261"><span class="linenos">261</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span>
-</span><span id="Postgres-262"><a href="#Postgres-262"><span class="linenos">262</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span>
-</span><span id="Postgres-263"><a href="#Postgres-263"><span class="linenos">263</span></a> <span class="n">CONCAT_NULL_OUTPUTS_STRING</span> <span class="o">=</span> <span class="kc">True</span>
-</span><span id="Postgres-264"><a href="#Postgres-264"><span class="linenos">264</span></a>
-</span><span id="Postgres-265"><a href="#Postgres-265"><span class="linenos">265</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres-266"><a href="#Postgres-266"><span class="linenos">266</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="p">,</span>
-</span><span id="Postgres-267"><a href="#Postgres-267"><span class="linenos">267</span></a> <span class="s2">&quot;DATE_TRUNC&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">(</span>
-</span><span id="Postgres-268"><a href="#Postgres-268"><span class="linenos">268</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">unit</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
-</span><span id="Postgres-269"><a href="#Postgres-269"><span class="linenos">269</span></a> <span class="p">),</span>
-</span><span id="Postgres-270"><a href="#Postgres-270"><span class="linenos">270</span></a> <span class="s2">&quot;GENERATE_SERIES&quot;</span><span class="p">:</span> <span class="n">_generate_series</span><span class="p">,</span>
-</span><span id="Postgres-271"><a href="#Postgres-271"><span class="linenos">271</span></a> <span class="s2">&quot;NOW&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
-</span><span id="Postgres-272"><a href="#Postgres-272"><span class="linenos">272</span></a> <span class="s2">&quot;TO_CHAR&quot;</span><span class="p">:</span> <span class="n">format_time_lambda</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">,</span> <span class="s2">&quot;postgres&quot;</span><span class="p">),</span>
-</span><span id="Postgres-273"><a href="#Postgres-273"><span class="linenos">273</span></a> <span class="s2">&quot;TO_TIMESTAMP&quot;</span><span class="p">:</span> <span class="n">_to_timestamp</span><span class="p">,</span>
-</span><span id="Postgres-274"><a href="#Postgres-274"><span class="linenos">274</span></a> <span class="s2">&quot;UNNEST&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres-210"><a href="#Postgres-210"><span class="linenos">210</span></a><span class="k">class</span> <span class="nc">Postgres</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span>
+</span><span id="Postgres-211"><a href="#Postgres-211"><span class="linenos">211</span></a> <span class="n">INDEX_OFFSET</span> <span class="o">=</span> <span class="mi">1</span>
+</span><span id="Postgres-212"><a href="#Postgres-212"><span class="linenos">212</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">&quot;nulls_are_large&quot;</span>
+</span><span id="Postgres-213"><a href="#Postgres-213"><span class="linenos">213</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;YYYY-MM-DD HH24:MI:SS&#39;&quot;</span>
+</span><span id="Postgres-214"><a href="#Postgres-214"><span class="linenos">214</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres-215"><a href="#Postgres-215"><span class="linenos">215</span></a> <span class="s2">&quot;AM&quot;</span><span class="p">:</span> <span class="s2">&quot;%p&quot;</span><span class="p">,</span>
+</span><span id="Postgres-216"><a href="#Postgres-216"><span class="linenos">216</span></a> <span class="s2">&quot;PM&quot;</span><span class="p">:</span> <span class="s2">&quot;%p&quot;</span><span class="p">,</span>
+</span><span id="Postgres-217"><a href="#Postgres-217"><span class="linenos">217</span></a> <span class="s2">&quot;D&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%u</span><span class="s2">&quot;</span><span class="p">,</span> <span class="c1"># 1-based day of week</span>
+</span><span id="Postgres-218"><a href="#Postgres-218"><span class="linenos">218</span></a> <span class="s2">&quot;DD&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%d</span><span class="s2">&quot;</span><span class="p">,</span> <span class="c1"># day of month</span>
+</span><span id="Postgres-219"><a href="#Postgres-219"><span class="linenos">219</span></a> <span class="s2">&quot;DDD&quot;</span><span class="p">:</span> <span class="s2">&quot;%j&quot;</span><span class="p">,</span> <span class="c1"># zero padded day of year</span>
+</span><span id="Postgres-220"><a href="#Postgres-220"><span class="linenos">220</span></a> <span class="s2">&quot;FMDD&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%-d</span><span class="s2">&quot;</span><span class="p">,</span> <span class="c1"># - is no leading zero for Python; same for FM in postgres</span>
+</span><span id="Postgres-221"><a href="#Postgres-221"><span class="linenos">221</span></a> <span class="s2">&quot;FMDDD&quot;</span><span class="p">:</span> <span class="s2">&quot;%-j&quot;</span><span class="p">,</span> <span class="c1"># day of year</span>
+</span><span id="Postgres-222"><a href="#Postgres-222"><span class="linenos">222</span></a> <span class="s2">&quot;FMHH12&quot;</span><span class="p">:</span> <span class="s2">&quot;%-I&quot;</span><span class="p">,</span> <span class="c1"># 9</span>
+</span><span id="Postgres-223"><a href="#Postgres-223"><span class="linenos">223</span></a> <span class="s2">&quot;FMHH24&quot;</span><span class="p">:</span> <span class="s2">&quot;%-H&quot;</span><span class="p">,</span> <span class="c1"># 9</span>
+</span><span id="Postgres-224"><a href="#Postgres-224"><span class="linenos">224</span></a> <span class="s2">&quot;FMMI&quot;</span><span class="p">:</span> <span class="s2">&quot;%-M&quot;</span><span class="p">,</span> <span class="c1"># Minute</span>
+</span><span id="Postgres-225"><a href="#Postgres-225"><span class="linenos">225</span></a> <span class="s2">&quot;FMMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%-m&quot;</span><span class="p">,</span> <span class="c1"># 1</span>
+</span><span id="Postgres-226"><a href="#Postgres-226"><span class="linenos">226</span></a> <span class="s2">&quot;FMSS&quot;</span><span class="p">:</span> <span class="s2">&quot;%-S&quot;</span><span class="p">,</span> <span class="c1"># Second</span>
+</span><span id="Postgres-227"><a href="#Postgres-227"><span class="linenos">227</span></a> <span class="s2">&quot;HH12&quot;</span><span class="p">:</span> <span class="s2">&quot;%I&quot;</span><span class="p">,</span> <span class="c1"># 09</span>
+</span><span id="Postgres-228"><a href="#Postgres-228"><span class="linenos">228</span></a> <span class="s2">&quot;HH24&quot;</span><span class="p">:</span> <span class="s2">&quot;%H&quot;</span><span class="p">,</span> <span class="c1"># 09</span>
+</span><span id="Postgres-229"><a href="#Postgres-229"><span class="linenos">229</span></a> <span class="s2">&quot;MI&quot;</span><span class="p">:</span> <span class="s2">&quot;%M&quot;</span><span class="p">,</span> <span class="c1"># zero padded minute</span>
+</span><span id="Postgres-230"><a href="#Postgres-230"><span class="linenos">230</span></a> <span class="s2">&quot;MM&quot;</span><span class="p">:</span> <span class="s2">&quot;%m&quot;</span><span class="p">,</span> <span class="c1"># 01</span>
+</span><span id="Postgres-231"><a href="#Postgres-231"><span class="linenos">231</span></a> <span class="s2">&quot;OF&quot;</span><span class="p">:</span> <span class="s2">&quot;%z&quot;</span><span class="p">,</span> <span class="c1"># utc offset</span>
+</span><span id="Postgres-232"><a href="#Postgres-232"><span class="linenos">232</span></a> <span class="s2">&quot;SS&quot;</span><span class="p">:</span> <span class="s2">&quot;%S&quot;</span><span class="p">,</span> <span class="c1"># zero padded second</span>
+</span><span id="Postgres-233"><a href="#Postgres-233"><span class="linenos">233</span></a> <span class="s2">&quot;TMDay&quot;</span><span class="p">:</span> <span class="s2">&quot;%A&quot;</span><span class="p">,</span> <span class="c1"># TM is locale dependent</span>
+</span><span id="Postgres-234"><a href="#Postgres-234"><span class="linenos">234</span></a> <span class="s2">&quot;TMDy&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%a</span><span class="s2">&quot;</span><span class="p">,</span>
+</span><span id="Postgres-235"><a href="#Postgres-235"><span class="linenos">235</span></a> <span class="s2">&quot;TMMon&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span> <span class="c1"># Sep</span>
+</span><span id="Postgres-236"><a href="#Postgres-236"><span class="linenos">236</span></a> <span class="s2">&quot;TMMonth&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&quot;</span><span class="p">,</span> <span class="c1"># September</span>
+</span><span id="Postgres-237"><a href="#Postgres-237"><span class="linenos">237</span></a> <span class="s2">&quot;TZ&quot;</span><span class="p">:</span> <span class="s2">&quot;%Z&quot;</span><span class="p">,</span> <span class="c1"># uppercase timezone name</span>
+</span><span id="Postgres-238"><a href="#Postgres-238"><span class="linenos">238</span></a> <span class="s2">&quot;US&quot;</span><span class="p">:</span> <span class="s2">&quot;</span><span class="si">%f</span><span class="s2">&quot;</span><span class="p">,</span> <span class="c1"># zero padded microsecond</span>
+</span><span id="Postgres-239"><a href="#Postgres-239"><span class="linenos">239</span></a> <span class="s2">&quot;WW&quot;</span><span class="p">:</span> <span class="s2">&quot;%U&quot;</span><span class="p">,</span> <span class="c1"># 1-based week of year</span>
+</span><span id="Postgres-240"><a href="#Postgres-240"><span class="linenos">240</span></a> <span class="s2">&quot;YY&quot;</span><span class="p">:</span> <span class="s2">&quot;%y&quot;</span><span class="p">,</span> <span class="c1"># 15</span>
+</span><span id="Postgres-241"><a href="#Postgres-241"><span class="linenos">241</span></a> <span class="s2">&quot;YYYY&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span> <span class="c1"># 2015</span>
+</span><span id="Postgres-242"><a href="#Postgres-242"><span class="linenos">242</span></a> <span class="p">}</span>
+</span><span id="Postgres-243"><a href="#Postgres-243"><span class="linenos">243</span></a>
+</span><span id="Postgres-244"><a href="#Postgres-244"><span class="linenos">244</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span>
+</span><span id="Postgres-245"><a href="#Postgres-245"><span class="linenos">245</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;$$&quot;</span><span class="p">]</span>
+</span><span id="Postgres-246"><a href="#Postgres-246"><span class="linenos">246</span></a>
+</span><span id="Postgres-247"><a href="#Postgres-247"><span class="linenos">247</span></a> <span class="n">BIT_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;b&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;B&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">)]</span>
+</span><span id="Postgres-248"><a href="#Postgres-248"><span class="linenos">248</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;x&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;X&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">)]</span>
+</span><span id="Postgres-249"><a href="#Postgres-249"><span class="linenos">249</span></a> <span class="n">BYTE_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;e&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;E&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">)]</span>
+</span><span id="Postgres-250"><a href="#Postgres-250"><span class="linenos">250</span></a>
+</span><span id="Postgres-251"><a href="#Postgres-251"><span class="linenos">251</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres-252"><a href="#Postgres-252"><span class="linenos">252</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">,</span>
+</span><span id="Postgres-253"><a href="#Postgres-253"><span class="linenos">253</span></a> <span class="s2">&quot;~~&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span>
+</span><span id="Postgres-254"><a href="#Postgres-254"><span class="linenos">254</span></a> <span class="s2">&quot;~~*&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span>
+</span><span id="Postgres-255"><a href="#Postgres-255"><span class="linenos">255</span></a> <span class="s2">&quot;~*&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">,</span>
+</span><span id="Postgres-256"><a href="#Postgres-256"><span class="linenos">256</span></a> <span class="s2">&quot;~&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span>
+</span><span id="Postgres-257"><a href="#Postgres-257"><span class="linenos">257</span></a> <span class="s2">&quot;@&gt;&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">,</span>
+</span><span id="Postgres-258"><a href="#Postgres-258"><span class="linenos">258</span></a> <span class="s2">&quot;&lt;@&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">,</span>
+</span><span id="Postgres-259"><a href="#Postgres-259"><span class="linenos">259</span></a> <span class="s2">&quot;BEGIN&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="Postgres-260"><a href="#Postgres-260"><span class="linenos">260</span></a> <span class="s2">&quot;BEGIN TRANSACTION&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span>
+</span><span id="Postgres-261"><a href="#Postgres-261"><span class="linenos">261</span></a> <span class="s2">&quot;BIGSERIAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">,</span>
+</span><span id="Postgres-262"><a href="#Postgres-262"><span class="linenos">262</span></a> <span class="s2">&quot;CHARACTER VARYING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span>
+</span><span id="Postgres-263"><a href="#Postgres-263"><span class="linenos">263</span></a> <span class="s2">&quot;DECLARE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="Postgres-264"><a href="#Postgres-264"><span class="linenos">264</span></a> <span class="s2">&quot;DO&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="Postgres-265"><a href="#Postgres-265"><span class="linenos">265</span></a> <span class="s2">&quot;HSTORE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HSTORE</span><span class="p">,</span>
+</span><span id="Postgres-266"><a href="#Postgres-266"><span class="linenos">266</span></a> <span class="s2">&quot;JSONB&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSONB</span><span class="p">,</span>
+</span><span id="Postgres-267"><a href="#Postgres-267"><span class="linenos">267</span></a> <span class="s2">&quot;REFRESH&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="Postgres-268"><a href="#Postgres-268"><span class="linenos">268</span></a> <span class="s2">&quot;REINDEX&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="Postgres-269"><a href="#Postgres-269"><span class="linenos">269</span></a> <span class="s2">&quot;RESET&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="Postgres-270"><a href="#Postgres-270"><span class="linenos">270</span></a> <span class="s2">&quot;REVOKE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="Postgres-271"><a href="#Postgres-271"><span class="linenos">271</span></a> <span class="s2">&quot;SERIAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">,</span>
+</span><span id="Postgres-272"><a href="#Postgres-272"><span class="linenos">272</span></a> <span class="s2">&quot;SMALLSERIAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">,</span>
+</span><span id="Postgres-273"><a href="#Postgres-273"><span class="linenos">273</span></a> <span class="s2">&quot;TEMP&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span>
+</span><span id="Postgres-274"><a href="#Postgres-274"><span class="linenos">274</span></a> <span class="s2">&quot;CSTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">,</span>
</span><span id="Postgres-275"><a href="#Postgres-275"><span class="linenos">275</span></a> <span class="p">}</span>
</span><span id="Postgres-276"><a href="#Postgres-276"><span class="linenos">276</span></a>
-</span><span id="Postgres-277"><a href="#Postgres-277"><span class="linenos">277</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres-278"><a href="#Postgres-278"><span class="linenos">278</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span>
-</span><span id="Postgres-279"><a href="#Postgres-279"><span class="linenos">279</span></a> <span class="s2">&quot;DATE_PART&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_date_part</span><span class="p">(),</span>
+</span><span id="Postgres-277"><a href="#Postgres-277"><span class="linenos">277</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres-278"><a href="#Postgres-278"><span class="linenos">278</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span>
+</span><span id="Postgres-279"><a href="#Postgres-279"><span class="linenos">279</span></a> <span class="s2">&quot;$&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span>
</span><span id="Postgres-280"><a href="#Postgres-280"><span class="linenos">280</span></a> <span class="p">}</span>
</span><span id="Postgres-281"><a href="#Postgres-281"><span class="linenos">281</span></a>
-</span><span id="Postgres-282"><a href="#Postgres-282"><span class="linenos">282</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres-283"><a href="#Postgres-283"><span class="linenos">283</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">,</span>
-</span><span id="Postgres-284"><a href="#Postgres-284"><span class="linenos">284</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">,</span>
-</span><span id="Postgres-285"><a href="#Postgres-285"><span class="linenos">285</span></a> <span class="p">}</span>
-</span><span id="Postgres-286"><a href="#Postgres-286"><span class="linenos">286</span></a>
-</span><span id="Postgres-287"><a href="#Postgres-287"><span class="linenos">287</span></a> <span class="n">EXPONENT</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres-288"><a href="#Postgres-288"><span class="linenos">288</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</span><span class="p">,</span>
-</span><span id="Postgres-289"><a href="#Postgres-289"><span class="linenos">289</span></a> <span class="p">}</span>
-</span><span id="Postgres-290"><a href="#Postgres-290"><span class="linenos">290</span></a>
-</span><span id="Postgres-291"><a href="#Postgres-291"><span class="linenos">291</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres-292"><a href="#Postgres-292"><span class="linenos">292</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span>
-</span><span id="Postgres-293"><a href="#Postgres-293"><span class="linenos">293</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAMP</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</span><span class="p">),</span>
-</span><span id="Postgres-294"><a href="#Postgres-294"><span class="linenos">294</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContains</span><span class="p">),</span>
-</span><span id="Postgres-295"><a href="#Postgres-295"><span class="linenos">295</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContained</span><span class="p">),</span>
-</span><span id="Postgres-296"><a href="#Postgres-296"><span class="linenos">296</span></a> <span class="p">}</span>
-</span><span id="Postgres-297"><a href="#Postgres-297"><span class="linenos">297</span></a>
-</span><span id="Postgres-298"><a href="#Postgres-298"><span class="linenos">298</span></a> <span class="k">def</span> <span class="nf">_parse_factor</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
-</span><span id="Postgres-299"><a href="#Postgres-299"><span class="linenos">299</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exponent</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">FACTOR</span><span class="p">)</span>
-</span><span id="Postgres-300"><a href="#Postgres-300"><span class="linenos">300</span></a>
-</span><span id="Postgres-301"><a href="#Postgres-301"><span class="linenos">301</span></a> <span class="k">def</span> <span class="nf">_parse_exponent</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
-</span><span id="Postgres-302"><a href="#Postgres-302"><span class="linenos">302</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPONENT</span><span class="p">)</span>
-</span><span id="Postgres-303"><a href="#Postgres-303"><span class="linenos">303</span></a>
-</span><span id="Postgres-304"><a href="#Postgres-304"><span class="linenos">304</span></a> <span class="k">def</span> <span class="nf">_parse_date_part</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
-</span><span id="Postgres-305"><a href="#Postgres-305"><span class="linenos">305</span></a> <span class="n">part</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span>
-</span><span id="Postgres-306"><a href="#Postgres-306"><span class="linenos">306</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span>
-</span><span id="Postgres-307"><a href="#Postgres-307"><span class="linenos">307</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span>
-</span><span id="Postgres-308"><a href="#Postgres-308"><span class="linenos">308</span></a>
-</span><span id="Postgres-309"><a href="#Postgres-309"><span class="linenos">309</span></a> <span class="k">if</span> <span class="n">part</span> <span class="ow">and</span> <span class="n">part</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span>
-</span><span id="Postgres-310"><a href="#Postgres-310"><span class="linenos">310</span></a> <span class="n">part</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="n">part</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
-</span><span id="Postgres-311"><a href="#Postgres-311"><span class="linenos">311</span></a>
-</span><span id="Postgres-312"><a href="#Postgres-312"><span class="linenos">312</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">part</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
+</span><span id="Postgres-282"><a href="#Postgres-282"><span class="linenos">282</span></a> <span class="n">VAR_SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;$&quot;</span><span class="p">}</span>
+</span><span id="Postgres-283"><a href="#Postgres-283"><span class="linenos">283</span></a>
+</span><span id="Postgres-284"><a href="#Postgres-284"><span class="linenos">284</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span>
+</span><span id="Postgres-285"><a href="#Postgres-285"><span class="linenos">285</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span>
+</span><span id="Postgres-286"><a href="#Postgres-286"><span class="linenos">286</span></a> <span class="n">CONCAT_NULL_OUTPUTS_STRING</span> <span class="o">=</span> <span class="kc">True</span>
+</span><span id="Postgres-287"><a href="#Postgres-287"><span class="linenos">287</span></a>
+</span><span id="Postgres-288"><a href="#Postgres-288"><span class="linenos">288</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres-289"><a href="#Postgres-289"><span class="linenos">289</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="p">,</span>
+</span><span id="Postgres-290"><a href="#Postgres-290"><span class="linenos">290</span></a> <span class="s2">&quot;DATE_TRUNC&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">(</span>
+</span><span id="Postgres-291"><a href="#Postgres-291"><span class="linenos">291</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">unit</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+</span><span id="Postgres-292"><a href="#Postgres-292"><span class="linenos">292</span></a> <span class="p">),</span>
+</span><span id="Postgres-293"><a href="#Postgres-293"><span class="linenos">293</span></a> <span class="s2">&quot;GENERATE_SERIES&quot;</span><span class="p">:</span> <span class="n">_generate_series</span><span class="p">,</span>
+</span><span id="Postgres-294"><a href="#Postgres-294"><span class="linenos">294</span></a> <span class="s2">&quot;NOW&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
+</span><span id="Postgres-295"><a href="#Postgres-295"><span class="linenos">295</span></a> <span class="s2">&quot;TO_CHAR&quot;</span><span class="p">:</span> <span class="n">format_time_lambda</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">,</span> <span class="s2">&quot;postgres&quot;</span><span class="p">),</span>
+</span><span id="Postgres-296"><a href="#Postgres-296"><span class="linenos">296</span></a> <span class="s2">&quot;TO_TIMESTAMP&quot;</span><span class="p">:</span> <span class="n">_to_timestamp</span><span class="p">,</span>
+</span><span id="Postgres-297"><a href="#Postgres-297"><span class="linenos">297</span></a> <span class="s2">&quot;UNNEST&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
+</span><span id="Postgres-298"><a href="#Postgres-298"><span class="linenos">298</span></a> <span class="p">}</span>
+</span><span id="Postgres-299"><a href="#Postgres-299"><span class="linenos">299</span></a>
+</span><span id="Postgres-300"><a href="#Postgres-300"><span class="linenos">300</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres-301"><a href="#Postgres-301"><span class="linenos">301</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span>
+</span><span id="Postgres-302"><a href="#Postgres-302"><span class="linenos">302</span></a> <span class="s2">&quot;DATE_PART&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_date_part</span><span class="p">(),</span>
+</span><span id="Postgres-303"><a href="#Postgres-303"><span class="linenos">303</span></a> <span class="p">}</span>
+</span><span id="Postgres-304"><a href="#Postgres-304"><span class="linenos">304</span></a>
+</span><span id="Postgres-305"><a href="#Postgres-305"><span class="linenos">305</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres-306"><a href="#Postgres-306"><span class="linenos">306</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">,</span>
+</span><span id="Postgres-307"><a href="#Postgres-307"><span class="linenos">307</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">,</span>
+</span><span id="Postgres-308"><a href="#Postgres-308"><span class="linenos">308</span></a> <span class="p">}</span>
+</span><span id="Postgres-309"><a href="#Postgres-309"><span class="linenos">309</span></a>
+</span><span id="Postgres-310"><a href="#Postgres-310"><span class="linenos">310</span></a> <span class="n">EXPONENT</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres-311"><a href="#Postgres-311"><span class="linenos">311</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</span><span class="p">,</span>
+</span><span id="Postgres-312"><a href="#Postgres-312"><span class="linenos">312</span></a> <span class="p">}</span>
</span><span id="Postgres-313"><a href="#Postgres-313"><span class="linenos">313</span></a>
-</span><span id="Postgres-314"><a href="#Postgres-314"><span class="linenos">314</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span>
-</span><span id="Postgres-315"><a href="#Postgres-315"><span class="linenos">315</span></a> <span class="n">SINGLE_STRING_INTERVAL</span> <span class="o">=</span> <span class="kc">True</span>
-</span><span id="Postgres-316"><a href="#Postgres-316"><span class="linenos">316</span></a> <span class="n">LOCKING_READS_SUPPORTED</span> <span class="o">=</span> <span class="kc">True</span>
-</span><span id="Postgres-317"><a href="#Postgres-317"><span class="linenos">317</span></a> <span class="n">JOIN_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
-</span><span id="Postgres-318"><a href="#Postgres-318"><span class="linenos">318</span></a> <span class="n">TABLE_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
-</span><span id="Postgres-319"><a href="#Postgres-319"><span class="linenos">319</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">&quot;$&quot;</span>
+</span><span id="Postgres-314"><a href="#Postgres-314"><span class="linenos">314</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres-315"><a href="#Postgres-315"><span class="linenos">315</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span>
+</span><span id="Postgres-316"><a href="#Postgres-316"><span class="linenos">316</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAMP</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</span><span class="p">),</span>
+</span><span id="Postgres-317"><a href="#Postgres-317"><span class="linenos">317</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContains</span><span class="p">),</span>
+</span><span id="Postgres-318"><a href="#Postgres-318"><span class="linenos">318</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContained</span><span class="p">),</span>
+</span><span id="Postgres-319"><a href="#Postgres-319"><span class="linenos">319</span></a> <span class="p">}</span>
</span><span id="Postgres-320"><a href="#Postgres-320"><span class="linenos">320</span></a>
-</span><span id="Postgres-321"><a href="#Postgres-321"><span class="linenos">321</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres-322"><a href="#Postgres-322"><span class="linenos">322</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="Postgres-323"><a href="#Postgres-323"><span class="linenos">323</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">TINYINT</span><span class="p">:</span> <span class="s2">&quot;SMALLINT&quot;</span><span class="p">,</span>
-</span><span id="Postgres-324"><a href="#Postgres-324"><span class="linenos">324</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="Postgres-325"><a href="#Postgres-325"><span class="linenos">325</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">DOUBLE</span><span class="p">:</span> <span class="s2">&quot;DOUBLE PRECISION&quot;</span><span class="p">,</span>
-</span><span id="Postgres-326"><a href="#Postgres-326"><span class="linenos">326</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;BYTEA&quot;</span><span class="p">,</span>
-</span><span id="Postgres-327"><a href="#Postgres-327"><span class="linenos">327</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;BYTEA&quot;</span><span class="p">,</span>
-</span><span id="Postgres-328"><a href="#Postgres-328"><span class="linenos">328</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">DATETIME</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP&quot;</span><span class="p">,</span>
-</span><span id="Postgres-329"><a href="#Postgres-329"><span class="linenos">329</span></a> <span class="p">}</span>
-</span><span id="Postgres-330"><a href="#Postgres-330"><span class="linenos">330</span></a>
-</span><span id="Postgres-331"><a href="#Postgres-331"><span class="linenos">331</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres-332"><a href="#Postgres-332"><span class="linenos">332</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="Postgres-333"><a href="#Postgres-333"><span class="linenos">333</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</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="Postgres-334"><a href="#Postgres-334"><span class="linenos">334</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</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">_auto_increment_to_serial</span><span class="p">,</span> <span class="n">_serial_to_generated</span><span class="p">]),</span>
-</span><span id="Postgres-335"><a href="#Postgres-335"><span class="linenos">335</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="Postgres-336"><a href="#Postgres-336"><span class="linenos">336</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="Postgres-337"><a href="#Postgres-337"><span class="linenos">337</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_scalar_sql</span><span class="p">,</span>
-</span><span id="Postgres-338"><a href="#Postgres-338"><span class="linenos">338</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</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;#&gt;&quot;</span><span class="p">),</span>
-</span><span id="Postgres-339"><a href="#Postgres-339"><span class="linenos">339</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</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;#&gt;&gt;&quot;</span><span class="p">),</span>
-</span><span id="Postgres-340"><a href="#Postgres-340"><span class="linenos">340</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBContains</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="Postgres-341"><a href="#Postgres-341"><span class="linenos">341</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</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="Postgres-342"><a href="#Postgres-342"><span class="linenos">342</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="n">no_paren_current_date_sql</span><span class="p">,</span>
-</span><span id="Postgres-343"><a href="#Postgres-343"><span class="linenos">343</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="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">&quot;CURRENT_TIMESTAMP&quot;</span><span class="p">,</span>
-</span><span id="Postgres-344"><a href="#Postgres-344"><span class="linenos">344</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">&quot;+&quot;</span><span class="p">),</span>
-</span><span id="Postgres-345"><a href="#Postgres-345"><span class="linenos">345</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="Postgres-346"><a href="#Postgres-346"><span class="linenos">346</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">&quot;-&quot;</span><span class="p">),</span>
-</span><span id="Postgres-347"><a href="#Postgres-347"><span class="linenos">347</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">:</span> <span class="n">_date_diff_sql</span><span class="p">,</span>
-</span><span id="Postgres-348"><a href="#Postgres-348"><span class="linenos">348</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="Postgres-349"><a href="#Postgres-349"><span class="linenos">349</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="Postgres-350"><a href="#Postgres-350"><span class="linenos">350</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Max</span><span class="p">:</span> <span class="n">max_or_greatest</span><span class="p">,</span>
-</span><span id="Postgres-351"><a href="#Postgres-351"><span class="linenos">351</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MapFromEntries</span><span class="p">:</span> <span class="n">no_map_from_entries_sql</span><span class="p">,</span>
-</span><span id="Postgres-352"><a href="#Postgres-352"><span class="linenos">352</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Min</span><span class="p">:</span> <span class="n">min_or_least</span><span class="p">,</span>
-</span><span id="Postgres-353"><a href="#Postgres-353"><span class="linenos">353</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</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;&amp;&amp;&quot;</span><span class="p">),</span>
-</span><span id="Postgres-354"><a href="#Postgres-354"><span class="linenos">354</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContains</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;@&gt;&quot;</span><span class="p">),</span>
-</span><span id="Postgres-355"><a href="#Postgres-355"><span class="linenos">355</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContained</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;&lt;@&quot;</span><span class="p">),</span>
-</span><span id="Postgres-356"><a href="#Postgres-356"><span class="linenos">356</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</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">remove_target_from_merge</span><span class="p">]),</span>
-</span><span id="Postgres-357"><a href="#Postgres-357"><span class="linenos">357</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> <span class="n">no_pivot_sql</span><span class="p">,</span>
-</span><span id="Postgres-358"><a href="#Postgres-358"><span class="linenos">358</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</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="Postgres-359"><a href="#Postgres-359"><span class="linenos">359</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</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="Postgres-360"><a href="#Postgres-360"><span class="linenos">360</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="Postgres-361"><a href="#Postgres-361"><span class="linenos">361</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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;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="Postgres-362"><a href="#Postgres-362"><span class="linenos">362</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">:</span> <span class="n">_substring_sql</span><span class="p">,</span>
-</span><span id="Postgres-363"><a href="#Postgres-363"><span class="linenos">363</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="Postgres-364"><a href="#Postgres-364"><span class="linenos">364</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="Postgres-365"><a href="#Postgres-365"><span class="linenos">365</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;TO_CHAR(</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="Postgres-366"><a href="#Postgres-366"><span class="linenos">366</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">:</span> <span class="n">no_tablesample_sql</span><span class="p">,</span>
-</span><span id="Postgres-367"><a href="#Postgres-367"><span class="linenos">367</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ToChar</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">function_fallback_sql</span><span class="p">(</span><span class="n">e</span><span class="p">),</span>
-</span><span id="Postgres-368"><a href="#Postgres-368"><span class="linenos">368</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">,</span>
-</span><span id="Postgres-369"><a href="#Postgres-369"><span class="linenos">369</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">no_trycast_sql</span><span class="p">,</span>
-</span><span id="Postgres-370"><a href="#Postgres-370"><span class="linenos">370</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</span><span class="p">:</span> <span class="n">ts_or_ds_to_date_sql</span><span class="p">(</span><span class="s2">&quot;postgres&quot;</span><span class="p">),</span>
-</span><span id="Postgres-371"><a href="#Postgres-371"><span class="linenos">371</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</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;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">)&quot;</span><span class="p">,</span>
-</span><span id="Postgres-372"><a href="#Postgres-372"><span class="linenos">372</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="Postgres-373"><a href="#Postgres-373"><span class="linenos">373</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">:</span> <span class="n">_string_agg_sql</span><span class="p">,</span>
-</span><span id="Postgres-374"><a href="#Postgres-374"><span class="linenos">374</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="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">&#39;ARRAY&#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">sql</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 class="si">}</span><span class="s2">)&quot;</span>
-</span><span id="Postgres-375"><a href="#Postgres-375"><span class="linenos">375</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</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 class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span>
-</span><span id="Postgres-376"><a href="#Postgres-376"><span class="linenos">376</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">&#39;ARRAY&#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">expressions</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]&quot;</span><span class="p">,</span>
-</span><span id="Postgres-377"><a href="#Postgres-377"><span class="linenos">377</span></a> <span class="p">}</span>
-</span><span id="Postgres-378"><a href="#Postgres-378"><span class="linenos">378</span></a>
-</span><span id="Postgres-379"><a href="#Postgres-379"><span class="linenos">379</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres-380"><a href="#Postgres-380"><span class="linenos">380</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">PROPERTIES_LOCATION</span><span class="p">,</span>
-</span><span id="Postgres-381"><a href="#Postgres-381"><span class="linenos">381</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</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 class="p">,</span>
-</span><span id="Postgres-382"><a href="#Postgres-382"><span class="linenos">382</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</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 class="p">,</span>
-</span><span id="Postgres-383"><a href="#Postgres-383"><span class="linenos">383</span></a> <span class="p">}</span>
-</span><span id="Postgres-384"><a href="#Postgres-384"><span class="linenos">384</span></a>
-</span><span id="Postgres-385"><a href="#Postgres-385"><span class="linenos">385</span></a> <span class="k">def</span> <span class="nf">bracket_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">Bracket</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="Postgres-386"><a href="#Postgres-386"><span class="linenos">386</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Forms like ARRAY[1, 2, 3][3] aren&#39;t allowed; we need to wrap the ARRAY.&quot;&quot;&quot;</span>
-</span><span id="Postgres-387"><a href="#Postgres-387"><span class="linenos">387</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span>
-</span><span id="Postgres-388"><a href="#Postgres-388"><span class="linenos">388</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
-</span><span id="Postgres-389"><a href="#Postgres-389"><span class="linenos">389</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;this&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span>
-</span><span id="Postgres-390"><a href="#Postgres-390"><span class="linenos">390</span></a>
-</span><span id="Postgres-391"><a href="#Postgres-391"><span class="linenos">391</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
+</span><span id="Postgres-321"><a href="#Postgres-321"><span class="linenos">321</span></a> <span class="k">def</span> <span class="nf">_parse_factor</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
+</span><span id="Postgres-322"><a href="#Postgres-322"><span class="linenos">322</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exponent</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">FACTOR</span><span class="p">)</span>
+</span><span id="Postgres-323"><a href="#Postgres-323"><span class="linenos">323</span></a>
+</span><span id="Postgres-324"><a href="#Postgres-324"><span class="linenos">324</span></a> <span class="k">def</span> <span class="nf">_parse_exponent</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
+</span><span id="Postgres-325"><a href="#Postgres-325"><span class="linenos">325</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPONENT</span><span class="p">)</span>
+</span><span id="Postgres-326"><a href="#Postgres-326"><span class="linenos">326</span></a>
+</span><span id="Postgres-327"><a href="#Postgres-327"><span class="linenos">327</span></a> <span class="k">def</span> <span class="nf">_parse_date_part</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
+</span><span id="Postgres-328"><a href="#Postgres-328"><span class="linenos">328</span></a> <span class="n">part</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span>
+</span><span id="Postgres-329"><a href="#Postgres-329"><span class="linenos">329</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span>
+</span><span id="Postgres-330"><a href="#Postgres-330"><span class="linenos">330</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span>
+</span><span id="Postgres-331"><a href="#Postgres-331"><span class="linenos">331</span></a>
+</span><span id="Postgres-332"><a href="#Postgres-332"><span class="linenos">332</span></a> <span class="k">if</span> <span class="n">part</span> <span class="ow">and</span> <span class="n">part</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span>
+</span><span id="Postgres-333"><a href="#Postgres-333"><span class="linenos">333</span></a> <span class="n">part</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="n">part</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
+</span><span id="Postgres-334"><a href="#Postgres-334"><span class="linenos">334</span></a>
+</span><span id="Postgres-335"><a href="#Postgres-335"><span class="linenos">335</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">part</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
+</span><span id="Postgres-336"><a href="#Postgres-336"><span class="linenos">336</span></a>
+</span><span id="Postgres-337"><a href="#Postgres-337"><span class="linenos">337</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span>
+</span><span id="Postgres-338"><a href="#Postgres-338"><span class="linenos">338</span></a> <span class="n">SINGLE_STRING_INTERVAL</span> <span class="o">=</span> <span class="kc">True</span>
+</span><span id="Postgres-339"><a href="#Postgres-339"><span class="linenos">339</span></a> <span class="n">LOCKING_READS_SUPPORTED</span> <span class="o">=</span> <span class="kc">True</span>
+</span><span id="Postgres-340"><a href="#Postgres-340"><span class="linenos">340</span></a> <span class="n">JOIN_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
+</span><span id="Postgres-341"><a href="#Postgres-341"><span class="linenos">341</span></a> <span class="n">TABLE_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
+</span><span id="Postgres-342"><a href="#Postgres-342"><span class="linenos">342</span></a> <span class="n">QUERY_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
+</span><span id="Postgres-343"><a href="#Postgres-343"><span class="linenos">343</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">&quot;$&quot;</span>
+</span><span id="Postgres-344"><a href="#Postgres-344"><span class="linenos">344</span></a>
+</span><span id="Postgres-345"><a href="#Postgres-345"><span class="linenos">345</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres-346"><a href="#Postgres-346"><span class="linenos">346</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="Postgres-347"><a href="#Postgres-347"><span class="linenos">347</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">TINYINT</span><span class="p">:</span> <span class="s2">&quot;SMALLINT&quot;</span><span class="p">,</span>
+</span><span id="Postgres-348"><a href="#Postgres-348"><span class="linenos">348</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="Postgres-349"><a href="#Postgres-349"><span class="linenos">349</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">DOUBLE</span><span class="p">:</span> <span class="s2">&quot;DOUBLE PRECISION&quot;</span><span class="p">,</span>
+</span><span id="Postgres-350"><a href="#Postgres-350"><span class="linenos">350</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;BYTEA&quot;</span><span class="p">,</span>
+</span><span id="Postgres-351"><a href="#Postgres-351"><span class="linenos">351</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;BYTEA&quot;</span><span class="p">,</span>
+</span><span id="Postgres-352"><a href="#Postgres-352"><span class="linenos">352</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">DATETIME</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP&quot;</span><span class="p">,</span>
+</span><span id="Postgres-353"><a href="#Postgres-353"><span class="linenos">353</span></a> <span class="p">}</span>
+</span><span id="Postgres-354"><a href="#Postgres-354"><span class="linenos">354</span></a>
+</span><span id="Postgres-355"><a href="#Postgres-355"><span class="linenos">355</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres-356"><a href="#Postgres-356"><span class="linenos">356</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="Postgres-357"><a href="#Postgres-357"><span class="linenos">357</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</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="Postgres-358"><a href="#Postgres-358"><span class="linenos">358</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</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">_auto_increment_to_serial</span><span class="p">,</span> <span class="n">_serial_to_generated</span><span class="p">]),</span>
+</span><span id="Postgres-359"><a href="#Postgres-359"><span class="linenos">359</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="Postgres-360"><a href="#Postgres-360"><span class="linenos">360</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="Postgres-361"><a href="#Postgres-361"><span class="linenos">361</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_scalar_sql</span><span class="p">,</span>
+</span><span id="Postgres-362"><a href="#Postgres-362"><span class="linenos">362</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</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;#&gt;&quot;</span><span class="p">),</span>
+</span><span id="Postgres-363"><a href="#Postgres-363"><span class="linenos">363</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</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;#&gt;&gt;&quot;</span><span class="p">),</span>
+</span><span id="Postgres-364"><a href="#Postgres-364"><span class="linenos">364</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBContains</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="Postgres-365"><a href="#Postgres-365"><span class="linenos">365</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</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="Postgres-366"><a href="#Postgres-366"><span class="linenos">366</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="n">no_paren_current_date_sql</span><span class="p">,</span>
+</span><span id="Postgres-367"><a href="#Postgres-367"><span class="linenos">367</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="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">&quot;CURRENT_TIMESTAMP&quot;</span><span class="p">,</span>
+</span><span id="Postgres-368"><a href="#Postgres-368"><span class="linenos">368</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">&quot;+&quot;</span><span class="p">),</span>
+</span><span id="Postgres-369"><a href="#Postgres-369"><span class="linenos">369</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="Postgres-370"><a href="#Postgres-370"><span class="linenos">370</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">&quot;-&quot;</span><span class="p">),</span>
+</span><span id="Postgres-371"><a href="#Postgres-371"><span class="linenos">371</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">:</span> <span class="n">_date_diff_sql</span><span class="p">,</span>
+</span><span id="Postgres-372"><a href="#Postgres-372"><span class="linenos">372</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="Postgres-373"><a href="#Postgres-373"><span class="linenos">373</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="Postgres-374"><a href="#Postgres-374"><span class="linenos">374</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Max</span><span class="p">:</span> <span class="n">max_or_greatest</span><span class="p">,</span>
+</span><span id="Postgres-375"><a href="#Postgres-375"><span class="linenos">375</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MapFromEntries</span><span class="p">:</span> <span class="n">no_map_from_entries_sql</span><span class="p">,</span>
+</span><span id="Postgres-376"><a href="#Postgres-376"><span class="linenos">376</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Min</span><span class="p">:</span> <span class="n">min_or_least</span><span class="p">,</span>
+</span><span id="Postgres-377"><a href="#Postgres-377"><span class="linenos">377</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</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;&amp;&amp;&quot;</span><span class="p">),</span>
+</span><span id="Postgres-378"><a href="#Postgres-378"><span class="linenos">378</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContains</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;@&gt;&quot;</span><span class="p">),</span>
+</span><span id="Postgres-379"><a href="#Postgres-379"><span class="linenos">379</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContained</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;&lt;@&quot;</span><span class="p">),</span>
+</span><span id="Postgres-380"><a href="#Postgres-380"><span class="linenos">380</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</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">_remove_target_from_merge</span><span class="p">]),</span>
+</span><span id="Postgres-381"><a href="#Postgres-381"><span class="linenos">381</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> <span class="n">no_pivot_sql</span><span class="p">,</span>
+</span><span id="Postgres-382"><a href="#Postgres-382"><span class="linenos">382</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</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="Postgres-383"><a href="#Postgres-383"><span class="linenos">383</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</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="Postgres-384"><a href="#Postgres-384"><span class="linenos">384</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="Postgres-385"><a href="#Postgres-385"><span class="linenos">385</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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;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="Postgres-386"><a href="#Postgres-386"><span class="linenos">386</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">:</span> <span class="n">_substring_sql</span><span class="p">,</span>
+</span><span id="Postgres-387"><a href="#Postgres-387"><span class="linenos">387</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="Postgres-388"><a href="#Postgres-388"><span class="linenos">388</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="Postgres-389"><a href="#Postgres-389"><span class="linenos">389</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;TO_CHAR(</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="Postgres-390"><a href="#Postgres-390"><span class="linenos">390</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">:</span> <span class="n">no_tablesample_sql</span><span class="p">,</span>
+</span><span id="Postgres-391"><a href="#Postgres-391"><span class="linenos">391</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ToChar</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">function_fallback_sql</span><span class="p">(</span><span class="n">e</span><span class="p">),</span>
+</span><span id="Postgres-392"><a href="#Postgres-392"><span class="linenos">392</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">,</span>
+</span><span id="Postgres-393"><a href="#Postgres-393"><span class="linenos">393</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">no_trycast_sql</span><span class="p">,</span>
+</span><span id="Postgres-394"><a href="#Postgres-394"><span class="linenos">394</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</span><span class="p">:</span> <span class="n">ts_or_ds_to_date_sql</span><span class="p">(</span><span class="s2">&quot;postgres&quot;</span><span class="p">),</span>
+</span><span id="Postgres-395"><a href="#Postgres-395"><span class="linenos">395</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</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;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">)&quot;</span><span class="p">,</span>
+</span><span id="Postgres-396"><a href="#Postgres-396"><span class="linenos">396</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="Postgres-397"><a href="#Postgres-397"><span class="linenos">397</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">:</span> <span class="n">_string_agg_sql</span><span class="p">,</span>
+</span><span id="Postgres-398"><a href="#Postgres-398"><span class="linenos">398</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="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">&#39;ARRAY&#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">sql</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 class="si">}</span><span class="s2">)&quot;</span>
+</span><span id="Postgres-399"><a href="#Postgres-399"><span class="linenos">399</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</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 class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span>
+</span><span id="Postgres-400"><a href="#Postgres-400"><span class="linenos">400</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">&#39;ARRAY&#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">expressions</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]&quot;</span><span class="p">,</span>
+</span><span id="Postgres-401"><a href="#Postgres-401"><span class="linenos">401</span></a> <span class="p">}</span>
+</span><span id="Postgres-402"><a href="#Postgres-402"><span class="linenos">402</span></a>
+</span><span id="Postgres-403"><a href="#Postgres-403"><span class="linenos">403</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres-404"><a href="#Postgres-404"><span class="linenos">404</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">PROPERTIES_LOCATION</span><span class="p">,</span>
+</span><span id="Postgres-405"><a href="#Postgres-405"><span class="linenos">405</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</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 class="p">,</span>
+</span><span id="Postgres-406"><a href="#Postgres-406"><span class="linenos">406</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</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 class="p">,</span>
+</span><span id="Postgres-407"><a href="#Postgres-407"><span class="linenos">407</span></a> <span class="p">}</span>
+</span><span id="Postgres-408"><a href="#Postgres-408"><span class="linenos">408</span></a>
+</span><span id="Postgres-409"><a href="#Postgres-409"><span class="linenos">409</span></a> <span class="k">def</span> <span class="nf">bracket_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">Bracket</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="Postgres-410"><a href="#Postgres-410"><span class="linenos">410</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Forms like ARRAY[1, 2, 3][3] aren&#39;t allowed; we need to wrap the ARRAY.&quot;&quot;&quot;</span>
+</span><span id="Postgres-411"><a href="#Postgres-411"><span class="linenos">411</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span>
+</span><span id="Postgres-412"><a href="#Postgres-412"><span class="linenos">412</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
+</span><span id="Postgres-413"><a href="#Postgres-413"><span class="linenos">413</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;this&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span>
+</span><span id="Postgres-414"><a href="#Postgres-414"><span class="linenos">414</span></a>
+</span><span id="Postgres-415"><a href="#Postgres-415"><span class="linenos">415</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span></pre></div>
@@ -1184,30 +1200,6 @@
</div>
- <div id="Postgres.RAW_START" class="classattr">
- <div class="attr variable">
- <span class="name">RAW_START</span> =
-<span class="default_value">None</span>
-
-
- </div>
- <a class="headerlink" href="#Postgres.RAW_START"></a>
-
-
-
- </div>
- <div id="Postgres.RAW_END" class="classattr">
- <div class="attr variable">
- <span class="name">RAW_END</span> =
-<span class="default_value">None</span>
-
-
- </div>
- <a class="headerlink" href="#Postgres.RAW_END"></a>
-
-
-
- </div>
<div class="inherited">
<h5>Inherited Members</h5>
<dl>
@@ -1251,45 +1243,45 @@
</div>
<a class="headerlink" href="#Postgres.Tokenizer"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Tokenizer-221"><a href="#Postgres.Tokenizer-221"><span class="linenos">221</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span>
-</span><span id="Postgres.Tokenizer-222"><a href="#Postgres.Tokenizer-222"><span class="linenos">222</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;$$&quot;</span><span class="p">]</span>
-</span><span id="Postgres.Tokenizer-223"><a href="#Postgres.Tokenizer-223"><span class="linenos">223</span></a>
-</span><span id="Postgres.Tokenizer-224"><a href="#Postgres.Tokenizer-224"><span class="linenos">224</span></a> <span class="n">BIT_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;b&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;B&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">)]</span>
-</span><span id="Postgres.Tokenizer-225"><a href="#Postgres.Tokenizer-225"><span class="linenos">225</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;x&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;X&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">)]</span>
-</span><span id="Postgres.Tokenizer-226"><a href="#Postgres.Tokenizer-226"><span class="linenos">226</span></a> <span class="n">BYTE_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;e&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;E&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">)]</span>
-</span><span id="Postgres.Tokenizer-227"><a href="#Postgres.Tokenizer-227"><span class="linenos">227</span></a>
-</span><span id="Postgres.Tokenizer-228"><a href="#Postgres.Tokenizer-228"><span class="linenos">228</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres.Tokenizer-229"><a href="#Postgres.Tokenizer-229"><span class="linenos">229</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-230"><a href="#Postgres.Tokenizer-230"><span class="linenos">230</span></a> <span class="s2">&quot;~~&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-231"><a href="#Postgres.Tokenizer-231"><span class="linenos">231</span></a> <span class="s2">&quot;~~*&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-232"><a href="#Postgres.Tokenizer-232"><span class="linenos">232</span></a> <span class="s2">&quot;~*&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-233"><a href="#Postgres.Tokenizer-233"><span class="linenos">233</span></a> <span class="s2">&quot;~&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-234"><a href="#Postgres.Tokenizer-234"><span class="linenos">234</span></a> <span class="s2">&quot;@&gt;&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-235"><a href="#Postgres.Tokenizer-235"><span class="linenos">235</span></a> <span class="s2">&quot;&lt;@&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-236"><a href="#Postgres.Tokenizer-236"><span class="linenos">236</span></a> <span class="s2">&quot;BEGIN&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-237"><a href="#Postgres.Tokenizer-237"><span class="linenos">237</span></a> <span class="s2">&quot;BEGIN TRANSACTION&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-238"><a href="#Postgres.Tokenizer-238"><span class="linenos">238</span></a> <span class="s2">&quot;BIGSERIAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-239"><a href="#Postgres.Tokenizer-239"><span class="linenos">239</span></a> <span class="s2">&quot;CHARACTER VARYING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-240"><a href="#Postgres.Tokenizer-240"><span class="linenos">240</span></a> <span class="s2">&quot;DECLARE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-241"><a href="#Postgres.Tokenizer-241"><span class="linenos">241</span></a> <span class="s2">&quot;DO&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-242"><a href="#Postgres.Tokenizer-242"><span class="linenos">242</span></a> <span class="s2">&quot;HSTORE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HSTORE</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-243"><a href="#Postgres.Tokenizer-243"><span class="linenos">243</span></a> <span class="s2">&quot;JSONB&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSONB</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-244"><a href="#Postgres.Tokenizer-244"><span class="linenos">244</span></a> <span class="s2">&quot;REFRESH&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-245"><a href="#Postgres.Tokenizer-245"><span class="linenos">245</span></a> <span class="s2">&quot;REINDEX&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-246"><a href="#Postgres.Tokenizer-246"><span class="linenos">246</span></a> <span class="s2">&quot;RESET&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-247"><a href="#Postgres.Tokenizer-247"><span class="linenos">247</span></a> <span class="s2">&quot;REVOKE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-248"><a href="#Postgres.Tokenizer-248"><span class="linenos">248</span></a> <span class="s2">&quot;SERIAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-249"><a href="#Postgres.Tokenizer-249"><span class="linenos">249</span></a> <span class="s2">&quot;SMALLSERIAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-250"><a href="#Postgres.Tokenizer-250"><span class="linenos">250</span></a> <span class="s2">&quot;TEMP&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-251"><a href="#Postgres.Tokenizer-251"><span class="linenos">251</span></a> <span class="s2">&quot;CSTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-252"><a href="#Postgres.Tokenizer-252"><span class="linenos">252</span></a> <span class="p">}</span>
-</span><span id="Postgres.Tokenizer-253"><a href="#Postgres.Tokenizer-253"><span class="linenos">253</span></a>
-</span><span id="Postgres.Tokenizer-254"><a href="#Postgres.Tokenizer-254"><span class="linenos">254</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres.Tokenizer-255"><a href="#Postgres.Tokenizer-255"><span class="linenos">255</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-256"><a href="#Postgres.Tokenizer-256"><span class="linenos">256</span></a> <span class="s2">&quot;$&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span>
-</span><span id="Postgres.Tokenizer-257"><a href="#Postgres.Tokenizer-257"><span class="linenos">257</span></a> <span class="p">}</span>
-</span><span id="Postgres.Tokenizer-258"><a href="#Postgres.Tokenizer-258"><span class="linenos">258</span></a>
-</span><span id="Postgres.Tokenizer-259"><a href="#Postgres.Tokenizer-259"><span class="linenos">259</span></a> <span class="n">VAR_SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;$&quot;</span><span class="p">}</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Tokenizer-244"><a href="#Postgres.Tokenizer-244"><span class="linenos">244</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span>
+</span><span id="Postgres.Tokenizer-245"><a href="#Postgres.Tokenizer-245"><span class="linenos">245</span></a> <span class="n">QUOTES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;$$&quot;</span><span class="p">]</span>
+</span><span id="Postgres.Tokenizer-246"><a href="#Postgres.Tokenizer-246"><span class="linenos">246</span></a>
+</span><span id="Postgres.Tokenizer-247"><a href="#Postgres.Tokenizer-247"><span class="linenos">247</span></a> <span class="n">BIT_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;b&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;B&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">)]</span>
+</span><span id="Postgres.Tokenizer-248"><a href="#Postgres.Tokenizer-248"><span class="linenos">248</span></a> <span class="n">HEX_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;x&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;X&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">)]</span>
+</span><span id="Postgres.Tokenizer-249"><a href="#Postgres.Tokenizer-249"><span class="linenos">249</span></a> <span class="n">BYTE_STRINGS</span> <span class="o">=</span> <span class="p">[(</span><span class="s2">&quot;e&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">),</span> <span class="p">(</span><span class="s2">&quot;E&#39;&quot;</span><span class="p">,</span> <span class="s2">&quot;&#39;&quot;</span><span class="p">)]</span>
+</span><span id="Postgres.Tokenizer-250"><a href="#Postgres.Tokenizer-250"><span class="linenos">250</span></a>
+</span><span id="Postgres.Tokenizer-251"><a href="#Postgres.Tokenizer-251"><span class="linenos">251</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres.Tokenizer-252"><a href="#Postgres.Tokenizer-252"><span class="linenos">252</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">KEYWORDS</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-253"><a href="#Postgres.Tokenizer-253"><span class="linenos">253</span></a> <span class="s2">&quot;~~&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LIKE</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-254"><a href="#Postgres.Tokenizer-254"><span class="linenos">254</span></a> <span class="s2">&quot;~~*&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">ILIKE</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-255"><a href="#Postgres.Tokenizer-255"><span class="linenos">255</span></a> <span class="s2">&quot;~*&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">IRLIKE</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-256"><a href="#Postgres.Tokenizer-256"><span class="linenos">256</span></a> <span class="s2">&quot;~&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">RLIKE</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-257"><a href="#Postgres.Tokenizer-257"><span class="linenos">257</span></a> <span class="s2">&quot;@&gt;&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-258"><a href="#Postgres.Tokenizer-258"><span class="linenos">258</span></a> <span class="s2">&quot;&lt;@&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-259"><a href="#Postgres.Tokenizer-259"><span class="linenos">259</span></a> <span class="s2">&quot;BEGIN&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-260"><a href="#Postgres.Tokenizer-260"><span class="linenos">260</span></a> <span class="s2">&quot;BEGIN TRANSACTION&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BEGIN</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-261"><a href="#Postgres.Tokenizer-261"><span class="linenos">261</span></a> <span class="s2">&quot;BIGSERIAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIGSERIAL</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-262"><a href="#Postgres.Tokenizer-262"><span class="linenos">262</span></a> <span class="s2">&quot;CHARACTER VARYING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARCHAR</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-263"><a href="#Postgres.Tokenizer-263"><span class="linenos">263</span></a> <span class="s2">&quot;DECLARE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-264"><a href="#Postgres.Tokenizer-264"><span class="linenos">264</span></a> <span class="s2">&quot;DO&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-265"><a href="#Postgres.Tokenizer-265"><span class="linenos">265</span></a> <span class="s2">&quot;HSTORE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">HSTORE</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-266"><a href="#Postgres.Tokenizer-266"><span class="linenos">266</span></a> <span class="s2">&quot;JSONB&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">JSONB</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-267"><a href="#Postgres.Tokenizer-267"><span class="linenos">267</span></a> <span class="s2">&quot;REFRESH&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-268"><a href="#Postgres.Tokenizer-268"><span class="linenos">268</span></a> <span class="s2">&quot;REINDEX&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-269"><a href="#Postgres.Tokenizer-269"><span class="linenos">269</span></a> <span class="s2">&quot;RESET&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-270"><a href="#Postgres.Tokenizer-270"><span class="linenos">270</span></a> <span class="s2">&quot;REVOKE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">COMMAND</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-271"><a href="#Postgres.Tokenizer-271"><span class="linenos">271</span></a> <span class="s2">&quot;SERIAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERIAL</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-272"><a href="#Postgres.Tokenizer-272"><span class="linenos">272</span></a> <span class="s2">&quot;SMALLSERIAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SMALLSERIAL</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-273"><a href="#Postgres.Tokenizer-273"><span class="linenos">273</span></a> <span class="s2">&quot;TEMP&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEMPORARY</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-274"><a href="#Postgres.Tokenizer-274"><span class="linenos">274</span></a> <span class="s2">&quot;CSTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PSEUDO_TYPE</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-275"><a href="#Postgres.Tokenizer-275"><span class="linenos">275</span></a> <span class="p">}</span>
+</span><span id="Postgres.Tokenizer-276"><a href="#Postgres.Tokenizer-276"><span class="linenos">276</span></a>
+</span><span id="Postgres.Tokenizer-277"><a href="#Postgres.Tokenizer-277"><span class="linenos">277</span></a> <span class="n">SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres.Tokenizer-278"><a href="#Postgres.Tokenizer-278"><span class="linenos">278</span></a> <span class="o">**</span><span class="n">tokens</span><span class="o">.</span><span class="n">Tokenizer</span><span class="o">.</span><span class="n">SINGLE_TOKENS</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-279"><a href="#Postgres.Tokenizer-279"><span class="linenos">279</span></a> <span class="s2">&quot;$&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PARAMETER</span><span class="p">,</span>
+</span><span id="Postgres.Tokenizer-280"><a href="#Postgres.Tokenizer-280"><span class="linenos">280</span></a> <span class="p">}</span>
+</span><span id="Postgres.Tokenizer-281"><a href="#Postgres.Tokenizer-281"><span class="linenos">281</span></a>
+</span><span id="Postgres.Tokenizer-282"><a href="#Postgres.Tokenizer-282"><span class="linenos">282</span></a> <span class="n">VAR_SINGLE_TOKENS</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;$&quot;</span><span class="p">}</span>
</span></pre></div>
@@ -1418,58 +1410,58 @@
</div>
<a class="headerlink" href="#Postgres.Parser"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Parser-261"><a href="#Postgres.Parser-261"><span class="linenos">261</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span>
-</span><span id="Postgres.Parser-262"><a href="#Postgres.Parser-262"><span class="linenos">262</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span>
-</span><span id="Postgres.Parser-263"><a href="#Postgres.Parser-263"><span class="linenos">263</span></a> <span class="n">CONCAT_NULL_OUTPUTS_STRING</span> <span class="o">=</span> <span class="kc">True</span>
-</span><span id="Postgres.Parser-264"><a href="#Postgres.Parser-264"><span class="linenos">264</span></a>
-</span><span id="Postgres.Parser-265"><a href="#Postgres.Parser-265"><span class="linenos">265</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres.Parser-266"><a href="#Postgres.Parser-266"><span class="linenos">266</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="p">,</span>
-</span><span id="Postgres.Parser-267"><a href="#Postgres.Parser-267"><span class="linenos">267</span></a> <span class="s2">&quot;DATE_TRUNC&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">(</span>
-</span><span id="Postgres.Parser-268"><a href="#Postgres.Parser-268"><span class="linenos">268</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">unit</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
-</span><span id="Postgres.Parser-269"><a href="#Postgres.Parser-269"><span class="linenos">269</span></a> <span class="p">),</span>
-</span><span id="Postgres.Parser-270"><a href="#Postgres.Parser-270"><span class="linenos">270</span></a> <span class="s2">&quot;GENERATE_SERIES&quot;</span><span class="p">:</span> <span class="n">_generate_series</span><span class="p">,</span>
-</span><span id="Postgres.Parser-271"><a href="#Postgres.Parser-271"><span class="linenos">271</span></a> <span class="s2">&quot;NOW&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
-</span><span id="Postgres.Parser-272"><a href="#Postgres.Parser-272"><span class="linenos">272</span></a> <span class="s2">&quot;TO_CHAR&quot;</span><span class="p">:</span> <span class="n">format_time_lambda</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">,</span> <span class="s2">&quot;postgres&quot;</span><span class="p">),</span>
-</span><span id="Postgres.Parser-273"><a href="#Postgres.Parser-273"><span class="linenos">273</span></a> <span class="s2">&quot;TO_TIMESTAMP&quot;</span><span class="p">:</span> <span class="n">_to_timestamp</span><span class="p">,</span>
-</span><span id="Postgres.Parser-274"><a href="#Postgres.Parser-274"><span class="linenos">274</span></a> <span class="s2">&quot;UNNEST&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
-</span><span id="Postgres.Parser-275"><a href="#Postgres.Parser-275"><span class="linenos">275</span></a> <span class="p">}</span>
-</span><span id="Postgres.Parser-276"><a href="#Postgres.Parser-276"><span class="linenos">276</span></a>
-</span><span id="Postgres.Parser-277"><a href="#Postgres.Parser-277"><span class="linenos">277</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres.Parser-278"><a href="#Postgres.Parser-278"><span class="linenos">278</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span>
-</span><span id="Postgres.Parser-279"><a href="#Postgres.Parser-279"><span class="linenos">279</span></a> <span class="s2">&quot;DATE_PART&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_date_part</span><span class="p">(),</span>
-</span><span id="Postgres.Parser-280"><a href="#Postgres.Parser-280"><span class="linenos">280</span></a> <span class="p">}</span>
-</span><span id="Postgres.Parser-281"><a href="#Postgres.Parser-281"><span class="linenos">281</span></a>
-</span><span id="Postgres.Parser-282"><a href="#Postgres.Parser-282"><span class="linenos">282</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres.Parser-283"><a href="#Postgres.Parser-283"><span class="linenos">283</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">,</span>
-</span><span id="Postgres.Parser-284"><a href="#Postgres.Parser-284"><span class="linenos">284</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">,</span>
-</span><span id="Postgres.Parser-285"><a href="#Postgres.Parser-285"><span class="linenos">285</span></a> <span class="p">}</span>
-</span><span id="Postgres.Parser-286"><a href="#Postgres.Parser-286"><span class="linenos">286</span></a>
-</span><span id="Postgres.Parser-287"><a href="#Postgres.Parser-287"><span class="linenos">287</span></a> <span class="n">EXPONENT</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres.Parser-288"><a href="#Postgres.Parser-288"><span class="linenos">288</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</span><span class="p">,</span>
-</span><span id="Postgres.Parser-289"><a href="#Postgres.Parser-289"><span class="linenos">289</span></a> <span class="p">}</span>
-</span><span id="Postgres.Parser-290"><a href="#Postgres.Parser-290"><span class="linenos">290</span></a>
-</span><span id="Postgres.Parser-291"><a href="#Postgres.Parser-291"><span class="linenos">291</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres.Parser-292"><a href="#Postgres.Parser-292"><span class="linenos">292</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span>
-</span><span id="Postgres.Parser-293"><a href="#Postgres.Parser-293"><span class="linenos">293</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAMP</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</span><span class="p">),</span>
-</span><span id="Postgres.Parser-294"><a href="#Postgres.Parser-294"><span class="linenos">294</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContains</span><span class="p">),</span>
-</span><span id="Postgres.Parser-295"><a href="#Postgres.Parser-295"><span class="linenos">295</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContained</span><span class="p">),</span>
-</span><span id="Postgres.Parser-296"><a href="#Postgres.Parser-296"><span class="linenos">296</span></a> <span class="p">}</span>
-</span><span id="Postgres.Parser-297"><a href="#Postgres.Parser-297"><span class="linenos">297</span></a>
-</span><span id="Postgres.Parser-298"><a href="#Postgres.Parser-298"><span class="linenos">298</span></a> <span class="k">def</span> <span class="nf">_parse_factor</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
-</span><span id="Postgres.Parser-299"><a href="#Postgres.Parser-299"><span class="linenos">299</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exponent</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">FACTOR</span><span class="p">)</span>
-</span><span id="Postgres.Parser-300"><a href="#Postgres.Parser-300"><span class="linenos">300</span></a>
-</span><span id="Postgres.Parser-301"><a href="#Postgres.Parser-301"><span class="linenos">301</span></a> <span class="k">def</span> <span class="nf">_parse_exponent</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
-</span><span id="Postgres.Parser-302"><a href="#Postgres.Parser-302"><span class="linenos">302</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPONENT</span><span class="p">)</span>
-</span><span id="Postgres.Parser-303"><a href="#Postgres.Parser-303"><span class="linenos">303</span></a>
-</span><span id="Postgres.Parser-304"><a href="#Postgres.Parser-304"><span class="linenos">304</span></a> <span class="k">def</span> <span class="nf">_parse_date_part</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
-</span><span id="Postgres.Parser-305"><a href="#Postgres.Parser-305"><span class="linenos">305</span></a> <span class="n">part</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span>
-</span><span id="Postgres.Parser-306"><a href="#Postgres.Parser-306"><span class="linenos">306</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span>
-</span><span id="Postgres.Parser-307"><a href="#Postgres.Parser-307"><span class="linenos">307</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span>
-</span><span id="Postgres.Parser-308"><a href="#Postgres.Parser-308"><span class="linenos">308</span></a>
-</span><span id="Postgres.Parser-309"><a href="#Postgres.Parser-309"><span class="linenos">309</span></a> <span class="k">if</span> <span class="n">part</span> <span class="ow">and</span> <span class="n">part</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span>
-</span><span id="Postgres.Parser-310"><a href="#Postgres.Parser-310"><span class="linenos">310</span></a> <span class="n">part</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="n">part</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
-</span><span id="Postgres.Parser-311"><a href="#Postgres.Parser-311"><span class="linenos">311</span></a>
-</span><span id="Postgres.Parser-312"><a href="#Postgres.Parser-312"><span class="linenos">312</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">part</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Parser-284"><a href="#Postgres.Parser-284"><span class="linenos">284</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span>
+</span><span id="Postgres.Parser-285"><a href="#Postgres.Parser-285"><span class="linenos">285</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span>
+</span><span id="Postgres.Parser-286"><a href="#Postgres.Parser-286"><span class="linenos">286</span></a> <span class="n">CONCAT_NULL_OUTPUTS_STRING</span> <span class="o">=</span> <span class="kc">True</span>
+</span><span id="Postgres.Parser-287"><a href="#Postgres.Parser-287"><span class="linenos">287</span></a>
+</span><span id="Postgres.Parser-288"><a href="#Postgres.Parser-288"><span class="linenos">288</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres.Parser-289"><a href="#Postgres.Parser-289"><span class="linenos">289</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTIONS</span><span class="p">,</span>
+</span><span id="Postgres.Parser-290"><a href="#Postgres.Parser-290"><span class="linenos">290</span></a> <span class="s2">&quot;DATE_TRUNC&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">args</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">TimestampTrunc</span><span class="p">(</span>
+</span><span id="Postgres.Parser-291"><a href="#Postgres.Parser-291"><span class="linenos">291</span></a> <span class="n">this</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="n">unit</span><span class="o">=</span><span class="n">seq_get</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
+</span><span id="Postgres.Parser-292"><a href="#Postgres.Parser-292"><span class="linenos">292</span></a> <span class="p">),</span>
+</span><span id="Postgres.Parser-293"><a href="#Postgres.Parser-293"><span class="linenos">293</span></a> <span class="s2">&quot;GENERATE_SERIES&quot;</span><span class="p">:</span> <span class="n">_generate_series</span><span class="p">,</span>
+</span><span id="Postgres.Parser-294"><a href="#Postgres.Parser-294"><span class="linenos">294</span></a> <span class="s2">&quot;NOW&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentTimestamp</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
+</span><span id="Postgres.Parser-295"><a href="#Postgres.Parser-295"><span class="linenos">295</span></a> <span class="s2">&quot;TO_CHAR&quot;</span><span class="p">:</span> <span class="n">format_time_lambda</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">TimeToStr</span><span class="p">,</span> <span class="s2">&quot;postgres&quot;</span><span class="p">),</span>
+</span><span id="Postgres.Parser-296"><a href="#Postgres.Parser-296"><span class="linenos">296</span></a> <span class="s2">&quot;TO_TIMESTAMP&quot;</span><span class="p">:</span> <span class="n">_to_timestamp</span><span class="p">,</span>
+</span><span id="Postgres.Parser-297"><a href="#Postgres.Parser-297"><span class="linenos">297</span></a> <span class="s2">&quot;UNNEST&quot;</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Explode</span><span class="o">.</span><span class="n">from_arg_list</span><span class="p">,</span>
+</span><span id="Postgres.Parser-298"><a href="#Postgres.Parser-298"><span class="linenos">298</span></a> <span class="p">}</span>
+</span><span id="Postgres.Parser-299"><a href="#Postgres.Parser-299"><span class="linenos">299</span></a>
+</span><span id="Postgres.Parser-300"><a href="#Postgres.Parser-300"><span class="linenos">300</span></a> <span class="n">FUNCTION_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres.Parser-301"><a href="#Postgres.Parser-301"><span class="linenos">301</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">FUNCTION_PARSERS</span><span class="p">,</span>
+</span><span id="Postgres.Parser-302"><a href="#Postgres.Parser-302"><span class="linenos">302</span></a> <span class="s2">&quot;DATE_PART&quot;</span><span class="p">:</span> <span class="k">lambda</span> <span class="bp">self</span><span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_date_part</span><span class="p">(),</span>
+</span><span id="Postgres.Parser-303"><a href="#Postgres.Parser-303"><span class="linenos">303</span></a> <span class="p">}</span>
+</span><span id="Postgres.Parser-304"><a href="#Postgres.Parser-304"><span class="linenos">304</span></a>
+</span><span id="Postgres.Parser-305"><a href="#Postgres.Parser-305"><span class="linenos">305</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres.Parser-306"><a href="#Postgres.Parser-306"><span class="linenos">306</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">BITWISE</span><span class="p">,</span>
+</span><span id="Postgres.Parser-307"><a href="#Postgres.Parser-307"><span class="linenos">307</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">HASH</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</span><span class="p">,</span>
+</span><span id="Postgres.Parser-308"><a href="#Postgres.Parser-308"><span class="linenos">308</span></a> <span class="p">}</span>
+</span><span id="Postgres.Parser-309"><a href="#Postgres.Parser-309"><span class="linenos">309</span></a>
+</span><span id="Postgres.Parser-310"><a href="#Postgres.Parser-310"><span class="linenos">310</span></a> <span class="n">EXPONENT</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres.Parser-311"><a href="#Postgres.Parser-311"><span class="linenos">311</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">CARET</span><span class="p">:</span> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</span><span class="p">,</span>
+</span><span id="Postgres.Parser-312"><a href="#Postgres.Parser-312"><span class="linenos">312</span></a> <span class="p">}</span>
+</span><span id="Postgres.Parser-313"><a href="#Postgres.Parser-313"><span class="linenos">313</span></a>
+</span><span id="Postgres.Parser-314"><a href="#Postgres.Parser-314"><span class="linenos">314</span></a> <span class="n">RANGE_PARSERS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres.Parser-315"><a href="#Postgres.Parser-315"><span class="linenos">315</span></a> <span class="o">**</span><span class="n">parser</span><span class="o">.</span><span class="n">Parser</span><span class="o">.</span><span class="n">RANGE_PARSERS</span><span class="p">,</span>
+</span><span id="Postgres.Parser-316"><a href="#Postgres.Parser-316"><span class="linenos">316</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">DAMP</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</span><span class="p">),</span>
+</span><span id="Postgres.Parser-317"><a href="#Postgres.Parser-317"><span class="linenos">317</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">AT_GT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContains</span><span class="p">),</span>
+</span><span id="Postgres.Parser-318"><a href="#Postgres.Parser-318"><span class="linenos">318</span></a> <span class="n">TokenType</span><span class="o">.</span><span class="n">LT_AT</span><span class="p">:</span> <span class="n">binary_range_parser</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">ArrayContained</span><span class="p">),</span>
+</span><span id="Postgres.Parser-319"><a href="#Postgres.Parser-319"><span class="linenos">319</span></a> <span class="p">}</span>
+</span><span id="Postgres.Parser-320"><a href="#Postgres.Parser-320"><span class="linenos">320</span></a>
+</span><span id="Postgres.Parser-321"><a href="#Postgres.Parser-321"><span class="linenos">321</span></a> <span class="k">def</span> <span class="nf">_parse_factor</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
+</span><span id="Postgres.Parser-322"><a href="#Postgres.Parser-322"><span class="linenos">322</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_exponent</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">FACTOR</span><span class="p">)</span>
+</span><span id="Postgres.Parser-323"><a href="#Postgres.Parser-323"><span class="linenos">323</span></a>
+</span><span id="Postgres.Parser-324"><a href="#Postgres.Parser-324"><span class="linenos">324</span></a> <span class="k">def</span> <span class="nf">_parse_exponent</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">]:</span>
+</span><span id="Postgres.Parser-325"><a href="#Postgres.Parser-325"><span class="linenos">325</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_tokens</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_parse_unary</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">EXPONENT</span><span class="p">)</span>
+</span><span id="Postgres.Parser-326"><a href="#Postgres.Parser-326"><span class="linenos">326</span></a>
+</span><span id="Postgres.Parser-327"><a href="#Postgres.Parser-327"><span class="linenos">327</span></a> <span class="k">def</span> <span class="nf">_parse_date_part</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">exp</span><span class="o">.</span><span class="n">Expression</span><span class="p">:</span>
+</span><span id="Postgres.Parser-328"><a href="#Postgres.Parser-328"><span class="linenos">328</span></a> <span class="n">part</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_type</span><span class="p">()</span>
+</span><span id="Postgres.Parser-329"><a href="#Postgres.Parser-329"><span class="linenos">329</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_match</span><span class="p">(</span><span class="n">TokenType</span><span class="o">.</span><span class="n">COMMA</span><span class="p">)</span>
+</span><span id="Postgres.Parser-330"><a href="#Postgres.Parser-330"><span class="linenos">330</span></a> <span class="n">value</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_parse_bitwise</span><span class="p">()</span>
+</span><span id="Postgres.Parser-331"><a href="#Postgres.Parser-331"><span class="linenos">331</span></a>
+</span><span id="Postgres.Parser-332"><a href="#Postgres.Parser-332"><span class="linenos">332</span></a> <span class="k">if</span> <span class="n">part</span> <span class="ow">and</span> <span class="n">part</span><span class="o">.</span><span class="n">is_string</span><span class="p">:</span>
+</span><span id="Postgres.Parser-333"><a href="#Postgres.Parser-333"><span class="linenos">333</span></a> <span class="n">part</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="n">part</span><span class="o">.</span><span class="n">name</span><span class="p">)</span>
+</span><span id="Postgres.Parser-334"><a href="#Postgres.Parser-334"><span class="linenos">334</span></a>
+</span><span id="Postgres.Parser-335"><a href="#Postgres.Parser-335"><span class="linenos">335</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">expression</span><span class="p">(</span><span class="n">exp</span><span class="o">.</span><span class="n">Extract</span><span class="p">,</span> <span class="n">this</span><span class="o">=</span><span class="n">part</span><span class="p">,</span> <span class="n">expression</span><span class="o">=</span><span class="n">value</span><span class="p">)</span>
</span></pre></div>
@@ -1518,7 +1510,7 @@ Default: 3</li>
<div class="attr variable">
<span class="name">FUNCTIONS</span> =
<input id="Postgres.Parser.FUNCTIONS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
- <label class="view-value-button pdoc-button" for="Postgres.Parser.FUNCTIONS-view-value"></label><span class="default_value">{&#39;ABS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>&#39;&gt;&gt;, &#39;ANY_VALUE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>&#39;&gt;&gt;, &#39;APPROX_DISTINCT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>&#39;&gt;&gt;, &#39;APPROX_COUNT_DISTINCT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>&#39;&gt;&gt;, &#39;APPROX_QUANTILE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>&#39;&gt;&gt;, &#39;ARRAY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Array">sqlglot.expressions.Array</a>&#39;&gt;&gt;, &#39;ARRAY_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>&#39;&gt;&gt;, &#39;ARRAY_ALL&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>&#39;&gt;&gt;, &#39;ARRAY_ANY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>&#39;&gt;&gt;, &#39;ARRAY_CONCAT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>&#39;&gt;&gt;, &#39;ARRAY_CONTAINS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>&#39;&gt;&gt;, &#39;FILTER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>&#39;&gt;&gt;, &#39;ARRAY_FILTER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>&#39;&gt;&gt;, &#39;ARRAY_JOIN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayJoin">sqlglot.expressions.ArrayJoin</a>&#39;&gt;&gt;, &#39;ARRAY_SIZE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>&#39;&gt;&gt;, &#39;ARRAY_SORT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>&#39;&gt;&gt;, &#39;ARRAY_SUM&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>&#39;&gt;&gt;, &#39;ARRAY_UNION_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>&#39;&gt;&gt;, &#39;AVG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>&#39;&gt;&gt;, &#39;CASE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Case">sqlglot.expressions.Case</a>&#39;&gt;&gt;, &#39;CAST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>&#39;&gt;&gt;, &#39;CAST_TO_STR_TYPE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>&#39;&gt;&gt;, &#39;CEIL&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>&#39;&gt;&gt;, &#39;CEILING&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>&#39;&gt;&gt;, &#39;COALESCE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>&#39;&gt;&gt;, &#39;IFNULL&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>&#39;&gt;&gt;, &#39;NVL&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>&#39;&gt;&gt;, &#39;CONCAT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Concat">sqlglot.expressions.Concat</a>&#39;&gt;&gt;, &#39;CONCAT_WS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ConcatWs">sqlglot.expressions.ConcatWs</a>&#39;&gt;&gt;, &#39;COUNT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Count">sqlglot.expressions.Count</a>&#39;&gt;&gt;, &#39;COUNT_IF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>&#39;&gt;&gt;, &#39;CURRENT_DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>&#39;&gt;&gt;, &#39;CURRENT_DATETIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>&#39;&gt;&gt;, &#39;CURRENT_TIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>&#39;&gt;&gt;, &#39;CURRENT_TIMESTAMP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>&#39;&gt;&gt;, &#39;CURRENT_USER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>&#39;&gt;&gt;, &#39;DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Date">sqlglot.expressions.Date</a>&#39;&gt;&gt;, &#39;DATE_ADD&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>&#39;&gt;&gt;, &#39;DATEDIFF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>&#39;&gt;&gt;, &#39;DATE_DIFF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>&#39;&gt;&gt;, &#39;DATEFROMPARTS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>&#39;&gt;&gt;, &#39;DATE_STR_TO_DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>&#39;&gt;&gt;, &#39;DATE_SUB&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>&#39;&gt;&gt;, &#39;DATE_TO_DATE_STR&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;DATE_TO_DI&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>&#39;&gt;&gt;, &#39;DATE_TRUNC&#39;: &lt;function <a href="#Postgres.Parser">Postgres.Parser</a>.&lt;lambda&gt;&gt;, &#39;DATETIME_ADD&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>&#39;&gt;&gt;, &#39;DATETIME_DIFF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>&#39;&gt;&gt;, &#39;DATETIME_SUB&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>&#39;&gt;&gt;, &#39;DATETIME_TRUNC&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>&#39;&gt;&gt;, &#39;DAY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Day">sqlglot.expressions.Day</a>&#39;&gt;&gt;, &#39;DAY_OF_MONTH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>&#39;&gt;&gt;, &#39;DAYOFMONTH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>&#39;&gt;&gt;, &#39;DAY_OF_WEEK&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>&#39;&gt;&gt;, &#39;DAYOFWEEK&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>&#39;&gt;&gt;, &#39;DAY_OF_YEAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>&#39;&gt;&gt;, &#39;DAYOFYEAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>&#39;&gt;&gt;, &#39;DECODE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>&#39;&gt;&gt;, &#39;DI_TO_DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>&#39;&gt;&gt;, &#39;ENCODE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>&#39;&gt;&gt;, &#39;EXP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>&#39;&gt;&gt;, &#39;EXPLODE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>&#39;&gt;&gt;, &#39;EXTRACT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>&#39;&gt;&gt;, &#39;FLOOR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>&#39;&gt;&gt;, &#39;FROM_BASE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>&#39;&gt;&gt;, &#39;FROM_BASE64&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>&#39;&gt;&gt;, &#39;GENERATE_SERIES&#39;: &lt;function _generate_series&gt;, &#39;GREATEST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>&#39;&gt;&gt;, &#39;GROUP_CONCAT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>&#39;&gt;&gt;, &#39;HEX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Hex">sqlglot.expressions.Hex</a>&#39;&gt;&gt;, &#39;HLL&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>&#39;&gt;&gt;, &#39;IF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#If">sqlglot.expressions.If</a>&#39;&gt;&gt;, &#39;INITCAP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>&#39;&gt;&gt;, &#39;JSONB_EXTRACT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>&#39;&gt;&gt;, &#39;JSONB_EXTRACT_SCALAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>&#39;&gt;&gt;, &#39;JSON_EXTRACT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONExtract">sqlglot.expressions.JSONExtract</a>&#39;&gt;&gt;, &#39;JSON_EXTRACT_SCALAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>&#39;&gt;&gt;, &#39;JSON_FORMAT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>&#39;&gt;&gt;, &#39;J_S_O_N_OBJECT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>&#39;&gt;&gt;, &#39;LAST_DATE_OF_MONTH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LastDateOfMonth">sqlglot.expressions.LastDateOfMonth</a>&#39;&gt;&gt;, &#39;LEAST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Least">sqlglot.expressions.Least</a>&#39;&gt;&gt;, &#39;LEFT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Left">sqlglot.expressions.Left</a>&#39;&gt;&gt;, &#39;LENGTH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Length">sqlglot.expressions.Length</a>&#39;&gt;&gt;, &#39;LEN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Length">sqlglot.expressions.Length</a>&#39;&gt;&gt;, &#39;LEVENSHTEIN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>&#39;&gt;&gt;, &#39;LN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>&#39;&gt;&gt;, &#39;LOG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Log">sqlglot.expressions.Log</a>&#39;&gt;&gt;, &#39;LOG10&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Log10">sqlglot.expressions.Log10</a>&#39;&gt;&gt;, &#39;LOG2&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Log2">sqlglot.expressions.Log2</a>&#39;&gt;&gt;, &#39;LOGICAL_AND&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>&#39;&gt;&gt;, &#39;BOOL_AND&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>&#39;&gt;&gt;, &#39;BOOLAND_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>&#39;&gt;&gt;, &#39;LOGICAL_OR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>&#39;&gt;&gt;, &#39;BOOL_OR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>&#39;&gt;&gt;, &#39;BOOLOR_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>&#39;&gt;&gt;, &#39;LOWER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>&#39;&gt;&gt;, &#39;LCASE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>&#39;&gt;&gt;, &#39;MD5&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>&#39;&gt;&gt;, &#39;MAP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Map">sqlglot.expressions.Map</a>&#39;&gt;&gt;, &#39;MAP_FROM_ENTRIES&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>&#39;&gt;&gt;, &#39;MATCH_AGAINST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>&#39;&gt;&gt;, &#39;MAX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Max">sqlglot.expressions.Max</a>&#39;&gt;&gt;, &#39;MIN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Min">sqlglot.expressions.Min</a>&#39;&gt;&gt;, &#39;MONTH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Month">sqlglot.expressions.Month</a>&#39;&gt;&gt;, &#39;NEXT_VALUE_FOR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>&#39;&gt;&gt;, &#39;NUMBER_TO_STR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>&#39;&gt;&gt;, &#39;NVL2&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>&#39;&gt;&gt;, &#39;OPEN_J_S_O_N&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>&#39;&gt;&gt;, &#39;PARAMETERIZED_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>&#39;&gt;&gt;, &#39;PERCENTILE_CONT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>&#39;&gt;&gt;, &#39;PERCENTILE_DISC&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>&#39;&gt;&gt;, &#39;POSEXPLODE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>&#39;&gt;&gt;, &#39;POWER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>&#39;&gt;&gt;, &#39;POW&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>&#39;&gt;&gt;, &#39;QUANTILE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>&#39;&gt;&gt;, &#39;RANGE_N&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>&#39;&gt;&gt;, &#39;READ_CSV&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>&#39;&gt;&gt;, &#39;REDUCE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>&#39;&gt;&gt;, &#39;REGEXP_EXTRACT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>&#39;&gt;&gt;, &#39;REGEXP_I_LIKE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>&#39;&gt;&gt;, &#39;REGEXP_LIKE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>&#39;&gt;&gt;, &#39;REGEXP_SPLIT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>&#39;&gt;&gt;, &#39;REPEAT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>&#39;&gt;&gt;, &#39;RIGHT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Right">sqlglot.expressions.Right</a>&#39;&gt;&gt;, &#39;ROUND&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Round">sqlglot.expressions.Round</a>&#39;&gt;&gt;, &#39;ROW_NUMBER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>&#39;&gt;&gt;, &#39;SHA&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>&#39;&gt;&gt;, &#39;SHA1&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>&#39;&gt;&gt;, &#39;SHA2&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>&#39;&gt;&gt;, &#39;SAFE_CONCAT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SafeConcat">sqlglot.expressions.SafeConcat</a>&#39;&gt;&gt;, &#39;SAFE_DIVIDE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>&#39;&gt;&gt;, &#39;SET_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SetAgg">sqlglot.expressions.SetAgg</a>&#39;&gt;&gt;, &#39;SORT_ARRAY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>&#39;&gt;&gt;, &#39;SPLIT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Split">sqlglot.expressions.Split</a>&#39;&gt;&gt;, &#39;SQRT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>&#39;&gt;&gt;, &#39;STANDARD_HASH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>&#39;&gt;&gt;, &#39;STAR_MAP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>&#39;&gt;&gt;, &#39;STDDEV&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>&#39;&gt;&gt;, &#39;STDDEV_POP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>&#39;&gt;&gt;, &#39;STDDEV_SAMP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>&#39;&gt;&gt;, &#39;STR_POSITION&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>&#39;&gt;&gt;, &#39;STR_TO_DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>&#39;&gt;&gt;, &#39;STR_TO_TIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>&#39;&gt;&gt;, &#39;STR_TO_UNIX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>&#39;&gt;&gt;, &#39;STRUCT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>&#39;&gt;&gt;, &#39;STRUCT_EXTRACT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>&#39;&gt;&gt;, &#39;SUBSTRING&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>&#39;&gt;&gt;, &#39;SUM&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>&#39;&gt;&gt;, &#39;TIME_ADD&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>&#39;&gt;&gt;, &#39;TIME_DIFF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>&#39;&gt;&gt;, &#39;TIME_STR_TO_DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>&#39;&gt;&gt;, &#39;TIME_STR_TO_TIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>&#39;&gt;&gt;, &#39;TIME_STR_TO_UNIX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>&#39;&gt;&gt;, &#39;TIME_SUB&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>&#39;&gt;&gt;, &#39;TIME_TO_STR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>&#39;&gt;&gt;, &#39;TIME_TO_TIME_STR&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;TIME_TO_UNIX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>&#39;&gt;&gt;, &#39;TIME_TRUNC&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>&#39;&gt;&gt;, &#39;TIMESTAMP_ADD&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>&#39;&gt;&gt;, &#39;TIMESTAMP_DIFF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>&#39;&gt;&gt;, &#39;TIMESTAMP_SUB&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>&#39;&gt;&gt;, &#39;TIMESTAMP_TRUNC&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>&#39;&gt;&gt;, &#39;TO_BASE64&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>&#39;&gt;&gt;, &#39;TO_CHAR&#39;: &lt;function format_time_lambda.&lt;locals&gt;._format_time&gt;, &#39;TRIM&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>&#39;&gt;&gt;, &#39;TRY_CAST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>&#39;&gt;&gt;, &#39;TS_OR_DI_TO_DI&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>&#39;&gt;&gt;, &#39;TS_OR_DS_ADD&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>&#39;&gt;&gt;, &#39;TS_OR_DS_TO_DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>&#39;&gt;&gt;, &#39;TS_OR_DS_TO_DATE_STR&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;UNHEX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>&#39;&gt;&gt;, &#39;UNIX_TO_STR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>&#39;&gt;&gt;, &#39;UNIX_TO_TIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>&#39;&gt;&gt;, &#39;UNIX_TO_TIME_STR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>&#39;&gt;&gt;, &#39;UPPER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>&#39;&gt;&gt;, &#39;UCASE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>&#39;&gt;&gt;, &#39;VAR_MAP&#39;: &lt;function parse_var_map&gt;, &#39;VARIANCE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>&#39;&gt;&gt;, &#39;VARIANCE_SAMP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>&#39;&gt;&gt;, &#39;VAR_SAMP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>&#39;&gt;&gt;, &#39;VARIANCE_POP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>&#39;&gt;&gt;, &#39;VAR_POP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>&#39;&gt;&gt;, &#39;WEEK&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Week">sqlglot.expressions.Week</a>&#39;&gt;&gt;, &#39;WEEK_OF_YEAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>&#39;&gt;&gt;, &#39;WEEKOFYEAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>&#39;&gt;&gt;, &#39;WHEN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#When">sqlglot.expressions.When</a>&#39;&gt;&gt;, &#39;X_M_L_TABLE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>&#39;&gt;&gt;, &#39;YEAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Year">sqlglot.expressions.Year</a>&#39;&gt;&gt;, &#39;GLOB&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;LIKE&#39;: &lt;function parse_like&gt;, &#39;NOW&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>&#39;&gt;&gt;, &#39;TO_TIMESTAMP&#39;: &lt;function _to_timestamp&gt;, &#39;UNNEST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>&#39;&gt;&gt;}</span>
+ <label class="view-value-button pdoc-button" for="Postgres.Parser.FUNCTIONS-view-value"></label><span class="default_value">{&#39;ABS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Abs">sqlglot.expressions.Abs</a>&#39;&gt;&gt;, &#39;ANY_VALUE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#AnyValue">sqlglot.expressions.AnyValue</a>&#39;&gt;&gt;, &#39;APPROX_DISTINCT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>&#39;&gt;&gt;, &#39;APPROX_COUNT_DISTINCT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ApproxDistinct">sqlglot.expressions.ApproxDistinct</a>&#39;&gt;&gt;, &#39;APPROX_QUANTILE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ApproxQuantile">sqlglot.expressions.ApproxQuantile</a>&#39;&gt;&gt;, &#39;ARRAY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Array">sqlglot.expressions.Array</a>&#39;&gt;&gt;, &#39;ARRAY_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayAgg">sqlglot.expressions.ArrayAgg</a>&#39;&gt;&gt;, &#39;ARRAY_ALL&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayAll">sqlglot.expressions.ArrayAll</a>&#39;&gt;&gt;, &#39;ARRAY_ANY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayAny">sqlglot.expressions.ArrayAny</a>&#39;&gt;&gt;, &#39;ARRAY_CONCAT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayConcat">sqlglot.expressions.ArrayConcat</a>&#39;&gt;&gt;, &#39;ARRAY_CONTAINS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayContains">sqlglot.expressions.ArrayContains</a>&#39;&gt;&gt;, &#39;FILTER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>&#39;&gt;&gt;, &#39;ARRAY_FILTER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayFilter">sqlglot.expressions.ArrayFilter</a>&#39;&gt;&gt;, &#39;ARRAY_JOIN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayJoin">sqlglot.expressions.ArrayJoin</a>&#39;&gt;&gt;, &#39;ARRAY_SIZE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArraySize">sqlglot.expressions.ArraySize</a>&#39;&gt;&gt;, &#39;ARRAY_SORT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArraySort">sqlglot.expressions.ArraySort</a>&#39;&gt;&gt;, &#39;ARRAY_SUM&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArraySum">sqlglot.expressions.ArraySum</a>&#39;&gt;&gt;, &#39;ARRAY_UNION_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ArrayUnionAgg">sqlglot.expressions.ArrayUnionAgg</a>&#39;&gt;&gt;, &#39;AVG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Avg">sqlglot.expressions.Avg</a>&#39;&gt;&gt;, &#39;CASE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Case">sqlglot.expressions.Case</a>&#39;&gt;&gt;, &#39;CAST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Cast">sqlglot.expressions.Cast</a>&#39;&gt;&gt;, &#39;CAST_TO_STR_TYPE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CastToStrType">sqlglot.expressions.CastToStrType</a>&#39;&gt;&gt;, &#39;CEIL&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>&#39;&gt;&gt;, &#39;CEILING&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Ceil">sqlglot.expressions.Ceil</a>&#39;&gt;&gt;, &#39;COALESCE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>&#39;&gt;&gt;, &#39;IFNULL&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>&#39;&gt;&gt;, &#39;NVL&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Coalesce">sqlglot.expressions.Coalesce</a>&#39;&gt;&gt;, &#39;CONCAT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Concat">sqlglot.expressions.Concat</a>&#39;&gt;&gt;, &#39;CONCAT_WS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ConcatWs">sqlglot.expressions.ConcatWs</a>&#39;&gt;&gt;, &#39;COUNT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Count">sqlglot.expressions.Count</a>&#39;&gt;&gt;, &#39;COUNT_IF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CountIf">sqlglot.expressions.CountIf</a>&#39;&gt;&gt;, &#39;CURRENT_DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CurrentDate">sqlglot.expressions.CurrentDate</a>&#39;&gt;&gt;, &#39;CURRENT_DATETIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CurrentDatetime">sqlglot.expressions.CurrentDatetime</a>&#39;&gt;&gt;, &#39;CURRENT_TIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CurrentTime">sqlglot.expressions.CurrentTime</a>&#39;&gt;&gt;, &#39;CURRENT_TIMESTAMP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>&#39;&gt;&gt;, &#39;CURRENT_USER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CurrentUser">sqlglot.expressions.CurrentUser</a>&#39;&gt;&gt;, &#39;DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Date">sqlglot.expressions.Date</a>&#39;&gt;&gt;, &#39;DATE_ADD&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateAdd">sqlglot.expressions.DateAdd</a>&#39;&gt;&gt;, &#39;DATEDIFF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>&#39;&gt;&gt;, &#39;DATE_DIFF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateDiff">sqlglot.expressions.DateDiff</a>&#39;&gt;&gt;, &#39;DATEFROMPARTS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateFromParts">sqlglot.expressions.DateFromParts</a>&#39;&gt;&gt;, &#39;DATE_STR_TO_DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateStrToDate">sqlglot.expressions.DateStrToDate</a>&#39;&gt;&gt;, &#39;DATE_SUB&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateSub">sqlglot.expressions.DateSub</a>&#39;&gt;&gt;, &#39;DATE_TO_DATE_STR&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;DATE_TO_DI&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DateToDi">sqlglot.expressions.DateToDi</a>&#39;&gt;&gt;, &#39;DATE_TRUNC&#39;: &lt;function <a href="#Postgres.Parser">Postgres.Parser</a>.&lt;lambda&gt;&gt;, &#39;DATETIME_ADD&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DatetimeAdd">sqlglot.expressions.DatetimeAdd</a>&#39;&gt;&gt;, &#39;DATETIME_DIFF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DatetimeDiff">sqlglot.expressions.DatetimeDiff</a>&#39;&gt;&gt;, &#39;DATETIME_SUB&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DatetimeSub">sqlglot.expressions.DatetimeSub</a>&#39;&gt;&gt;, &#39;DATETIME_TRUNC&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DatetimeTrunc">sqlglot.expressions.DatetimeTrunc</a>&#39;&gt;&gt;, &#39;DAY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Day">sqlglot.expressions.Day</a>&#39;&gt;&gt;, &#39;DAY_OF_MONTH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>&#39;&gt;&gt;, &#39;DAYOFMONTH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfMonth">sqlglot.expressions.DayOfMonth</a>&#39;&gt;&gt;, &#39;DAY_OF_WEEK&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>&#39;&gt;&gt;, &#39;DAYOFWEEK&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfWeek">sqlglot.expressions.DayOfWeek</a>&#39;&gt;&gt;, &#39;DAY_OF_YEAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>&#39;&gt;&gt;, &#39;DAYOFYEAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DayOfYear">sqlglot.expressions.DayOfYear</a>&#39;&gt;&gt;, &#39;DECODE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Decode">sqlglot.expressions.Decode</a>&#39;&gt;&gt;, &#39;DI_TO_DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#DiToDate">sqlglot.expressions.DiToDate</a>&#39;&gt;&gt;, &#39;ENCODE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Encode">sqlglot.expressions.Encode</a>&#39;&gt;&gt;, &#39;EXP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Exp">sqlglot.expressions.Exp</a>&#39;&gt;&gt;, &#39;EXPLODE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>&#39;&gt;&gt;, &#39;EXTRACT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Extract">sqlglot.expressions.Extract</a>&#39;&gt;&gt;, &#39;FLOOR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Floor">sqlglot.expressions.Floor</a>&#39;&gt;&gt;, &#39;FROM_BASE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#FromBase">sqlglot.expressions.FromBase</a>&#39;&gt;&gt;, &#39;FROM_BASE64&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#FromBase64">sqlglot.expressions.FromBase64</a>&#39;&gt;&gt;, &#39;GENERATE_SERIES&#39;: &lt;function _generate_series&gt;, &#39;GREATEST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Greatest">sqlglot.expressions.Greatest</a>&#39;&gt;&gt;, &#39;GROUP_CONCAT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#GroupConcat">sqlglot.expressions.GroupConcat</a>&#39;&gt;&gt;, &#39;HEX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Hex">sqlglot.expressions.Hex</a>&#39;&gt;&gt;, &#39;HLL&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Hll">sqlglot.expressions.Hll</a>&#39;&gt;&gt;, &#39;IF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#If">sqlglot.expressions.If</a>&#39;&gt;&gt;, &#39;INITCAP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Initcap">sqlglot.expressions.Initcap</a>&#39;&gt;&gt;, &#39;JSON_ARRAY_CONTAINS&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONArrayContains">sqlglot.expressions.JSONArrayContains</a>&#39;&gt;&gt;, &#39;JSONB_EXTRACT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONBExtract">sqlglot.expressions.JSONBExtract</a>&#39;&gt;&gt;, &#39;JSONB_EXTRACT_SCALAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONBExtractScalar">sqlglot.expressions.JSONBExtractScalar</a>&#39;&gt;&gt;, &#39;JSON_EXTRACT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONExtract">sqlglot.expressions.JSONExtract</a>&#39;&gt;&gt;, &#39;JSON_EXTRACT_SCALAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONExtractScalar">sqlglot.expressions.JSONExtractScalar</a>&#39;&gt;&gt;, &#39;JSON_FORMAT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONFormat">sqlglot.expressions.JSONFormat</a>&#39;&gt;&gt;, &#39;J_S_O_N_OBJECT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#JSONObject">sqlglot.expressions.JSONObject</a>&#39;&gt;&gt;, &#39;LAST_DATE_OF_MONTH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LastDateOfMonth">sqlglot.expressions.LastDateOfMonth</a>&#39;&gt;&gt;, &#39;LEAST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Least">sqlglot.expressions.Least</a>&#39;&gt;&gt;, &#39;LEFT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Left">sqlglot.expressions.Left</a>&#39;&gt;&gt;, &#39;LENGTH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Length">sqlglot.expressions.Length</a>&#39;&gt;&gt;, &#39;LEN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Length">sqlglot.expressions.Length</a>&#39;&gt;&gt;, &#39;LEVENSHTEIN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Levenshtein">sqlglot.expressions.Levenshtein</a>&#39;&gt;&gt;, &#39;LN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Ln">sqlglot.expressions.Ln</a>&#39;&gt;&gt;, &#39;LOG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Log">sqlglot.expressions.Log</a>&#39;&gt;&gt;, &#39;LOG10&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Log10">sqlglot.expressions.Log10</a>&#39;&gt;&gt;, &#39;LOG2&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Log2">sqlglot.expressions.Log2</a>&#39;&gt;&gt;, &#39;LOGICAL_AND&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>&#39;&gt;&gt;, &#39;BOOL_AND&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>&#39;&gt;&gt;, &#39;BOOLAND_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LogicalAnd">sqlglot.expressions.LogicalAnd</a>&#39;&gt;&gt;, &#39;LOGICAL_OR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>&#39;&gt;&gt;, &#39;BOOL_OR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>&#39;&gt;&gt;, &#39;BOOLOR_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#LogicalOr">sqlglot.expressions.LogicalOr</a>&#39;&gt;&gt;, &#39;LOWER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>&#39;&gt;&gt;, &#39;LCASE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Lower">sqlglot.expressions.Lower</a>&#39;&gt;&gt;, &#39;MD5&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#MD5">sqlglot.expressions.MD5</a>&#39;&gt;&gt;, &#39;MAP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Map">sqlglot.expressions.Map</a>&#39;&gt;&gt;, &#39;MAP_FROM_ENTRIES&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#MapFromEntries">sqlglot.expressions.MapFromEntries</a>&#39;&gt;&gt;, &#39;MATCH_AGAINST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#MatchAgainst">sqlglot.expressions.MatchAgainst</a>&#39;&gt;&gt;, &#39;MAX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Max">sqlglot.expressions.Max</a>&#39;&gt;&gt;, &#39;MIN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Min">sqlglot.expressions.Min</a>&#39;&gt;&gt;, &#39;MONTH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Month">sqlglot.expressions.Month</a>&#39;&gt;&gt;, &#39;NEXT_VALUE_FOR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#NextValueFor">sqlglot.expressions.NextValueFor</a>&#39;&gt;&gt;, &#39;NUMBER_TO_STR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#NumberToStr">sqlglot.expressions.NumberToStr</a>&#39;&gt;&gt;, &#39;NVL2&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Nvl2">sqlglot.expressions.Nvl2</a>&#39;&gt;&gt;, &#39;OPEN_J_S_O_N&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#OpenJSON">sqlglot.expressions.OpenJSON</a>&#39;&gt;&gt;, &#39;PARAMETERIZED_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ParameterizedAgg">sqlglot.expressions.ParameterizedAgg</a>&#39;&gt;&gt;, &#39;PERCENTILE_CONT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#PercentileCont">sqlglot.expressions.PercentileCont</a>&#39;&gt;&gt;, &#39;PERCENTILE_DISC&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#PercentileDisc">sqlglot.expressions.PercentileDisc</a>&#39;&gt;&gt;, &#39;POSEXPLODE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Posexplode">sqlglot.expressions.Posexplode</a>&#39;&gt;&gt;, &#39;POWER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>&#39;&gt;&gt;, &#39;POW&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Pow">sqlglot.expressions.Pow</a>&#39;&gt;&gt;, &#39;QUANTILE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Quantile">sqlglot.expressions.Quantile</a>&#39;&gt;&gt;, &#39;RANGE_N&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RangeN">sqlglot.expressions.RangeN</a>&#39;&gt;&gt;, &#39;READ_CSV&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ReadCSV">sqlglot.expressions.ReadCSV</a>&#39;&gt;&gt;, &#39;REDUCE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Reduce">sqlglot.expressions.Reduce</a>&#39;&gt;&gt;, &#39;REGEXP_EXTRACT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RegexpExtract">sqlglot.expressions.RegexpExtract</a>&#39;&gt;&gt;, &#39;REGEXP_I_LIKE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RegexpILike">sqlglot.expressions.RegexpILike</a>&#39;&gt;&gt;, &#39;REGEXP_LIKE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RegexpLike">sqlglot.expressions.RegexpLike</a>&#39;&gt;&gt;, &#39;REGEXP_SPLIT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RegexpSplit">sqlglot.expressions.RegexpSplit</a>&#39;&gt;&gt;, &#39;REPEAT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Repeat">sqlglot.expressions.Repeat</a>&#39;&gt;&gt;, &#39;RIGHT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Right">sqlglot.expressions.Right</a>&#39;&gt;&gt;, &#39;ROUND&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Round">sqlglot.expressions.Round</a>&#39;&gt;&gt;, &#39;ROW_NUMBER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#RowNumber">sqlglot.expressions.RowNumber</a>&#39;&gt;&gt;, &#39;SHA&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>&#39;&gt;&gt;, &#39;SHA1&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SHA">sqlglot.expressions.SHA</a>&#39;&gt;&gt;, &#39;SHA2&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SHA2">sqlglot.expressions.SHA2</a>&#39;&gt;&gt;, &#39;SAFE_CONCAT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SafeConcat">sqlglot.expressions.SafeConcat</a>&#39;&gt;&gt;, &#39;SAFE_DIVIDE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SafeDivide">sqlglot.expressions.SafeDivide</a>&#39;&gt;&gt;, &#39;SET_AGG&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SetAgg">sqlglot.expressions.SetAgg</a>&#39;&gt;&gt;, &#39;SORT_ARRAY&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#SortArray">sqlglot.expressions.SortArray</a>&#39;&gt;&gt;, &#39;SPLIT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Split">sqlglot.expressions.Split</a>&#39;&gt;&gt;, &#39;SQRT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Sqrt">sqlglot.expressions.Sqrt</a>&#39;&gt;&gt;, &#39;STANDARD_HASH&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StandardHash">sqlglot.expressions.StandardHash</a>&#39;&gt;&gt;, &#39;STAR_MAP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StarMap">sqlglot.expressions.StarMap</a>&#39;&gt;&gt;, &#39;STDDEV&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Stddev">sqlglot.expressions.Stddev</a>&#39;&gt;&gt;, &#39;STDDEV_POP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StddevPop">sqlglot.expressions.StddevPop</a>&#39;&gt;&gt;, &#39;STDDEV_SAMP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StddevSamp">sqlglot.expressions.StddevSamp</a>&#39;&gt;&gt;, &#39;STR_POSITION&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StrPosition">sqlglot.expressions.StrPosition</a>&#39;&gt;&gt;, &#39;STR_TO_DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StrToDate">sqlglot.expressions.StrToDate</a>&#39;&gt;&gt;, &#39;STR_TO_TIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StrToTime">sqlglot.expressions.StrToTime</a>&#39;&gt;&gt;, &#39;STR_TO_UNIX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StrToUnix">sqlglot.expressions.StrToUnix</a>&#39;&gt;&gt;, &#39;STRUCT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Struct">sqlglot.expressions.Struct</a>&#39;&gt;&gt;, &#39;STRUCT_EXTRACT&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#StructExtract">sqlglot.expressions.StructExtract</a>&#39;&gt;&gt;, &#39;SUBSTRING&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Substring">sqlglot.expressions.Substring</a>&#39;&gt;&gt;, &#39;SUM&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Sum">sqlglot.expressions.Sum</a>&#39;&gt;&gt;, &#39;TIME_ADD&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeAdd">sqlglot.expressions.TimeAdd</a>&#39;&gt;&gt;, &#39;TIME_DIFF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeDiff">sqlglot.expressions.TimeDiff</a>&#39;&gt;&gt;, &#39;TIME_STR_TO_DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeStrToDate">sqlglot.expressions.TimeStrToDate</a>&#39;&gt;&gt;, &#39;TIME_STR_TO_TIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeStrToTime">sqlglot.expressions.TimeStrToTime</a>&#39;&gt;&gt;, &#39;TIME_STR_TO_UNIX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeStrToUnix">sqlglot.expressions.TimeStrToUnix</a>&#39;&gt;&gt;, &#39;TIME_SUB&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeSub">sqlglot.expressions.TimeSub</a>&#39;&gt;&gt;, &#39;TIME_TO_STR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeToStr">sqlglot.expressions.TimeToStr</a>&#39;&gt;&gt;, &#39;TIME_TO_TIME_STR&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;TIME_TO_UNIX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeToUnix">sqlglot.expressions.TimeToUnix</a>&#39;&gt;&gt;, &#39;TIME_TRUNC&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimeTrunc">sqlglot.expressions.TimeTrunc</a>&#39;&gt;&gt;, &#39;TIMESTAMP_ADD&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimestampAdd">sqlglot.expressions.TimestampAdd</a>&#39;&gt;&gt;, &#39;TIMESTAMP_DIFF&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimestampDiff">sqlglot.expressions.TimestampDiff</a>&#39;&gt;&gt;, &#39;TIMESTAMP_SUB&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimestampSub">sqlglot.expressions.TimestampSub</a>&#39;&gt;&gt;, &#39;TIMESTAMP_TRUNC&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TimestampTrunc">sqlglot.expressions.TimestampTrunc</a>&#39;&gt;&gt;, &#39;TO_BASE64&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#ToBase64">sqlglot.expressions.ToBase64</a>&#39;&gt;&gt;, &#39;TO_CHAR&#39;: &lt;function format_time_lambda.&lt;locals&gt;._format_time&gt;, &#39;TRIM&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Trim">sqlglot.expressions.Trim</a>&#39;&gt;&gt;, &#39;TRY_CAST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TryCast">sqlglot.expressions.TryCast</a>&#39;&gt;&gt;, &#39;TS_OR_DI_TO_DI&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TsOrDiToDi">sqlglot.expressions.TsOrDiToDi</a>&#39;&gt;&gt;, &#39;TS_OR_DS_ADD&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TsOrDsAdd">sqlglot.expressions.TsOrDsAdd</a>&#39;&gt;&gt;, &#39;TS_OR_DS_TO_DATE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#TsOrDsToDate">sqlglot.expressions.TsOrDsToDate</a>&#39;&gt;&gt;, &#39;TS_OR_DS_TO_DATE_STR&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;UNHEX&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Unhex">sqlglot.expressions.Unhex</a>&#39;&gt;&gt;, &#39;UNIX_TO_STR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#UnixToStr">sqlglot.expressions.UnixToStr</a>&#39;&gt;&gt;, &#39;UNIX_TO_TIME&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#UnixToTime">sqlglot.expressions.UnixToTime</a>&#39;&gt;&gt;, &#39;UNIX_TO_TIME_STR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#UnixToTimeStr">sqlglot.expressions.UnixToTimeStr</a>&#39;&gt;&gt;, &#39;UPPER&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>&#39;&gt;&gt;, &#39;UCASE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Upper">sqlglot.expressions.Upper</a>&#39;&gt;&gt;, &#39;VAR_MAP&#39;: &lt;function parse_var_map&gt;, &#39;VARIANCE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>&#39;&gt;&gt;, &#39;VARIANCE_SAMP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>&#39;&gt;&gt;, &#39;VAR_SAMP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Variance">sqlglot.expressions.Variance</a>&#39;&gt;&gt;, &#39;VARIANCE_POP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>&#39;&gt;&gt;, &#39;VAR_POP&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#VariancePop">sqlglot.expressions.VariancePop</a>&#39;&gt;&gt;, &#39;WEEK&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Week">sqlglot.expressions.Week</a>&#39;&gt;&gt;, &#39;WEEK_OF_YEAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>&#39;&gt;&gt;, &#39;WEEKOFYEAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#WeekOfYear">sqlglot.expressions.WeekOfYear</a>&#39;&gt;&gt;, &#39;WHEN&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#When">sqlglot.expressions.When</a>&#39;&gt;&gt;, &#39;X_M_L_TABLE&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#XMLTable">sqlglot.expressions.XMLTable</a>&#39;&gt;&gt;, &#39;YEAR&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Year">sqlglot.expressions.Year</a>&#39;&gt;&gt;, &#39;GLOB&#39;: &lt;function Parser.&lt;lambda&gt;&gt;, &#39;LIKE&#39;: &lt;function parse_like&gt;, &#39;NOW&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#CurrentTimestamp">sqlglot.expressions.CurrentTimestamp</a>&#39;&gt;&gt;, &#39;TO_TIMESTAMP&#39;: &lt;function _to_timestamp&gt;, &#39;UNNEST&#39;: &lt;bound method Func.from_arg_list of &lt;class &#39;<a href="../expressions.html#Explode">sqlglot.expressions.Explode</a>&#39;&gt;&gt;}</span>
</div>
@@ -1761,84 +1753,85 @@ Default: 3</li>
</div>
<a class="headerlink" href="#Postgres.Generator"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator-314"><a href="#Postgres.Generator-314"><span class="linenos">314</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span>
-</span><span id="Postgres.Generator-315"><a href="#Postgres.Generator-315"><span class="linenos">315</span></a> <span class="n">SINGLE_STRING_INTERVAL</span> <span class="o">=</span> <span class="kc">True</span>
-</span><span id="Postgres.Generator-316"><a href="#Postgres.Generator-316"><span class="linenos">316</span></a> <span class="n">LOCKING_READS_SUPPORTED</span> <span class="o">=</span> <span class="kc">True</span>
-</span><span id="Postgres.Generator-317"><a href="#Postgres.Generator-317"><span class="linenos">317</span></a> <span class="n">JOIN_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
-</span><span id="Postgres.Generator-318"><a href="#Postgres.Generator-318"><span class="linenos">318</span></a> <span class="n">TABLE_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
-</span><span id="Postgres.Generator-319"><a href="#Postgres.Generator-319"><span class="linenos">319</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">&quot;$&quot;</span>
-</span><span id="Postgres.Generator-320"><a href="#Postgres.Generator-320"><span class="linenos">320</span></a>
-</span><span id="Postgres.Generator-321"><a href="#Postgres.Generator-321"><span class="linenos">321</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres.Generator-322"><a href="#Postgres.Generator-322"><span class="linenos">322</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="Postgres.Generator-323"><a href="#Postgres.Generator-323"><span class="linenos">323</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">TINYINT</span><span class="p">:</span> <span class="s2">&quot;SMALLINT&quot;</span><span class="p">,</span>
-</span><span id="Postgres.Generator-324"><a href="#Postgres.Generator-324"><span class="linenos">324</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="Postgres.Generator-325"><a href="#Postgres.Generator-325"><span class="linenos">325</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">DOUBLE</span><span class="p">:</span> <span class="s2">&quot;DOUBLE PRECISION&quot;</span><span class="p">,</span>
-</span><span id="Postgres.Generator-326"><a href="#Postgres.Generator-326"><span class="linenos">326</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;BYTEA&quot;</span><span class="p">,</span>
-</span><span id="Postgres.Generator-327"><a href="#Postgres.Generator-327"><span class="linenos">327</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;BYTEA&quot;</span><span class="p">,</span>
-</span><span id="Postgres.Generator-328"><a href="#Postgres.Generator-328"><span class="linenos">328</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">DATETIME</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP&quot;</span><span class="p">,</span>
-</span><span id="Postgres.Generator-329"><a href="#Postgres.Generator-329"><span class="linenos">329</span></a> <span class="p">}</span>
-</span><span id="Postgres.Generator-330"><a href="#Postgres.Generator-330"><span class="linenos">330</span></a>
-</span><span id="Postgres.Generator-331"><a href="#Postgres.Generator-331"><span class="linenos">331</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres.Generator-332"><a href="#Postgres.Generator-332"><span class="linenos">332</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="Postgres.Generator-333"><a href="#Postgres.Generator-333"><span class="linenos">333</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</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="Postgres.Generator-334"><a href="#Postgres.Generator-334"><span class="linenos">334</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</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">_auto_increment_to_serial</span><span class="p">,</span> <span class="n">_serial_to_generated</span><span class="p">]),</span>
-</span><span id="Postgres.Generator-335"><a href="#Postgres.Generator-335"><span class="linenos">335</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="Postgres.Generator-336"><a href="#Postgres.Generator-336"><span class="linenos">336</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="Postgres.Generator-337"><a href="#Postgres.Generator-337"><span class="linenos">337</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_scalar_sql</span><span class="p">,</span>
-</span><span id="Postgres.Generator-338"><a href="#Postgres.Generator-338"><span class="linenos">338</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</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;#&gt;&quot;</span><span class="p">),</span>
-</span><span id="Postgres.Generator-339"><a href="#Postgres.Generator-339"><span class="linenos">339</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</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;#&gt;&gt;&quot;</span><span class="p">),</span>
-</span><span id="Postgres.Generator-340"><a href="#Postgres.Generator-340"><span class="linenos">340</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBContains</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="Postgres.Generator-341"><a href="#Postgres.Generator-341"><span class="linenos">341</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</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="Postgres.Generator-342"><a href="#Postgres.Generator-342"><span class="linenos">342</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="n">no_paren_current_date_sql</span><span class="p">,</span>
-</span><span id="Postgres.Generator-343"><a href="#Postgres.Generator-343"><span class="linenos">343</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="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">&quot;CURRENT_TIMESTAMP&quot;</span><span class="p">,</span>
-</span><span id="Postgres.Generator-344"><a href="#Postgres.Generator-344"><span class="linenos">344</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">&quot;+&quot;</span><span class="p">),</span>
-</span><span id="Postgres.Generator-345"><a href="#Postgres.Generator-345"><span class="linenos">345</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="Postgres.Generator-346"><a href="#Postgres.Generator-346"><span class="linenos">346</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">&quot;-&quot;</span><span class="p">),</span>
-</span><span id="Postgres.Generator-347"><a href="#Postgres.Generator-347"><span class="linenos">347</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">:</span> <span class="n">_date_diff_sql</span><span class="p">,</span>
-</span><span id="Postgres.Generator-348"><a href="#Postgres.Generator-348"><span class="linenos">348</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="Postgres.Generator-349"><a href="#Postgres.Generator-349"><span class="linenos">349</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="Postgres.Generator-350"><a href="#Postgres.Generator-350"><span class="linenos">350</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Max</span><span class="p">:</span> <span class="n">max_or_greatest</span><span class="p">,</span>
-</span><span id="Postgres.Generator-351"><a href="#Postgres.Generator-351"><span class="linenos">351</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MapFromEntries</span><span class="p">:</span> <span class="n">no_map_from_entries_sql</span><span class="p">,</span>
-</span><span id="Postgres.Generator-352"><a href="#Postgres.Generator-352"><span class="linenos">352</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Min</span><span class="p">:</span> <span class="n">min_or_least</span><span class="p">,</span>
-</span><span id="Postgres.Generator-353"><a href="#Postgres.Generator-353"><span class="linenos">353</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</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;&amp;&amp;&quot;</span><span class="p">),</span>
-</span><span id="Postgres.Generator-354"><a href="#Postgres.Generator-354"><span class="linenos">354</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContains</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;@&gt;&quot;</span><span class="p">),</span>
-</span><span id="Postgres.Generator-355"><a href="#Postgres.Generator-355"><span class="linenos">355</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContained</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;&lt;@&quot;</span><span class="p">),</span>
-</span><span id="Postgres.Generator-356"><a href="#Postgres.Generator-356"><span class="linenos">356</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</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">remove_target_from_merge</span><span class="p">]),</span>
-</span><span id="Postgres.Generator-357"><a href="#Postgres.Generator-357"><span class="linenos">357</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> <span class="n">no_pivot_sql</span><span class="p">,</span>
-</span><span id="Postgres.Generator-358"><a href="#Postgres.Generator-358"><span class="linenos">358</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</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="Postgres.Generator-359"><a href="#Postgres.Generator-359"><span class="linenos">359</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</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="Postgres.Generator-360"><a href="#Postgres.Generator-360"><span class="linenos">360</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="Postgres.Generator-361"><a href="#Postgres.Generator-361"><span class="linenos">361</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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;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="Postgres.Generator-362"><a href="#Postgres.Generator-362"><span class="linenos">362</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">:</span> <span class="n">_substring_sql</span><span class="p">,</span>
-</span><span id="Postgres.Generator-363"><a href="#Postgres.Generator-363"><span class="linenos">363</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="Postgres.Generator-364"><a href="#Postgres.Generator-364"><span class="linenos">364</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="Postgres.Generator-365"><a href="#Postgres.Generator-365"><span class="linenos">365</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;TO_CHAR(</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="Postgres.Generator-366"><a href="#Postgres.Generator-366"><span class="linenos">366</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">:</span> <span class="n">no_tablesample_sql</span><span class="p">,</span>
-</span><span id="Postgres.Generator-367"><a href="#Postgres.Generator-367"><span class="linenos">367</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ToChar</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">function_fallback_sql</span><span class="p">(</span><span class="n">e</span><span class="p">),</span>
-</span><span id="Postgres.Generator-368"><a href="#Postgres.Generator-368"><span class="linenos">368</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">,</span>
-</span><span id="Postgres.Generator-369"><a href="#Postgres.Generator-369"><span class="linenos">369</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">no_trycast_sql</span><span class="p">,</span>
-</span><span id="Postgres.Generator-370"><a href="#Postgres.Generator-370"><span class="linenos">370</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</span><span class="p">:</span> <span class="n">ts_or_ds_to_date_sql</span><span class="p">(</span><span class="s2">&quot;postgres&quot;</span><span class="p">),</span>
-</span><span id="Postgres.Generator-371"><a href="#Postgres.Generator-371"><span class="linenos">371</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</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;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">)&quot;</span><span class="p">,</span>
-</span><span id="Postgres.Generator-372"><a href="#Postgres.Generator-372"><span class="linenos">372</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="Postgres.Generator-373"><a href="#Postgres.Generator-373"><span class="linenos">373</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">:</span> <span class="n">_string_agg_sql</span><span class="p">,</span>
-</span><span id="Postgres.Generator-374"><a href="#Postgres.Generator-374"><span class="linenos">374</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="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">&#39;ARRAY&#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">sql</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 class="si">}</span><span class="s2">)&quot;</span>
-</span><span id="Postgres.Generator-375"><a href="#Postgres.Generator-375"><span class="linenos">375</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</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 class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span>
-</span><span id="Postgres.Generator-376"><a href="#Postgres.Generator-376"><span class="linenos">376</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">&#39;ARRAY&#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">expressions</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]&quot;</span><span class="p">,</span>
-</span><span id="Postgres.Generator-377"><a href="#Postgres.Generator-377"><span class="linenos">377</span></a> <span class="p">}</span>
-</span><span id="Postgres.Generator-378"><a href="#Postgres.Generator-378"><span class="linenos">378</span></a>
-</span><span id="Postgres.Generator-379"><a href="#Postgres.Generator-379"><span class="linenos">379</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span>
-</span><span id="Postgres.Generator-380"><a href="#Postgres.Generator-380"><span class="linenos">380</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">PROPERTIES_LOCATION</span><span class="p">,</span>
-</span><span id="Postgres.Generator-381"><a href="#Postgres.Generator-381"><span class="linenos">381</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</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 class="p">,</span>
-</span><span id="Postgres.Generator-382"><a href="#Postgres.Generator-382"><span class="linenos">382</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</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 class="p">,</span>
-</span><span id="Postgres.Generator-383"><a href="#Postgres.Generator-383"><span class="linenos">383</span></a> <span class="p">}</span>
-</span><span id="Postgres.Generator-384"><a href="#Postgres.Generator-384"><span class="linenos">384</span></a>
-</span><span id="Postgres.Generator-385"><a href="#Postgres.Generator-385"><span class="linenos">385</span></a> <span class="k">def</span> <span class="nf">bracket_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">Bracket</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="Postgres.Generator-386"><a href="#Postgres.Generator-386"><span class="linenos">386</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Forms like ARRAY[1, 2, 3][3] aren&#39;t allowed; we need to wrap the ARRAY.&quot;&quot;&quot;</span>
-</span><span id="Postgres.Generator-387"><a href="#Postgres.Generator-387"><span class="linenos">387</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span>
-</span><span id="Postgres.Generator-388"><a href="#Postgres.Generator-388"><span class="linenos">388</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
-</span><span id="Postgres.Generator-389"><a href="#Postgres.Generator-389"><span class="linenos">389</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;this&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span>
-</span><span id="Postgres.Generator-390"><a href="#Postgres.Generator-390"><span class="linenos">390</span></a>
-</span><span id="Postgres.Generator-391"><a href="#Postgres.Generator-391"><span class="linenos">391</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_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="Postgres.Generator-337"><a href="#Postgres.Generator-337"><span class="linenos">337</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">generator</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span>
+</span><span id="Postgres.Generator-338"><a href="#Postgres.Generator-338"><span class="linenos">338</span></a> <span class="n">SINGLE_STRING_INTERVAL</span> <span class="o">=</span> <span class="kc">True</span>
+</span><span id="Postgres.Generator-339"><a href="#Postgres.Generator-339"><span class="linenos">339</span></a> <span class="n">LOCKING_READS_SUPPORTED</span> <span class="o">=</span> <span class="kc">True</span>
+</span><span id="Postgres.Generator-340"><a href="#Postgres.Generator-340"><span class="linenos">340</span></a> <span class="n">JOIN_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
+</span><span id="Postgres.Generator-341"><a href="#Postgres.Generator-341"><span class="linenos">341</span></a> <span class="n">TABLE_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
+</span><span id="Postgres.Generator-342"><a href="#Postgres.Generator-342"><span class="linenos">342</span></a> <span class="n">QUERY_HINTS</span> <span class="o">=</span> <span class="kc">False</span>
+</span><span id="Postgres.Generator-343"><a href="#Postgres.Generator-343"><span class="linenos">343</span></a> <span class="n">PARAMETER_TOKEN</span> <span class="o">=</span> <span class="s2">&quot;$&quot;</span>
+</span><span id="Postgres.Generator-344"><a href="#Postgres.Generator-344"><span class="linenos">344</span></a>
+</span><span id="Postgres.Generator-345"><a href="#Postgres.Generator-345"><span class="linenos">345</span></a> <span class="n">TYPE_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres.Generator-346"><a href="#Postgres.Generator-346"><span class="linenos">346</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="Postgres.Generator-347"><a href="#Postgres.Generator-347"><span class="linenos">347</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">TINYINT</span><span class="p">:</span> <span class="s2">&quot;SMALLINT&quot;</span><span class="p">,</span>
+</span><span id="Postgres.Generator-348"><a href="#Postgres.Generator-348"><span class="linenos">348</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="Postgres.Generator-349"><a href="#Postgres.Generator-349"><span class="linenos">349</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">DOUBLE</span><span class="p">:</span> <span class="s2">&quot;DOUBLE PRECISION&quot;</span><span class="p">,</span>
+</span><span id="Postgres.Generator-350"><a href="#Postgres.Generator-350"><span class="linenos">350</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;BYTEA&quot;</span><span class="p">,</span>
+</span><span id="Postgres.Generator-351"><a href="#Postgres.Generator-351"><span class="linenos">351</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;BYTEA&quot;</span><span class="p">,</span>
+</span><span id="Postgres.Generator-352"><a href="#Postgres.Generator-352"><span class="linenos">352</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">DATETIME</span><span class="p">:</span> <span class="s2">&quot;TIMESTAMP&quot;</span><span class="p">,</span>
+</span><span id="Postgres.Generator-353"><a href="#Postgres.Generator-353"><span class="linenos">353</span></a> <span class="p">}</span>
+</span><span id="Postgres.Generator-354"><a href="#Postgres.Generator-354"><span class="linenos">354</span></a>
+</span><span id="Postgres.Generator-355"><a href="#Postgres.Generator-355"><span class="linenos">355</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres.Generator-356"><a href="#Postgres.Generator-356"><span class="linenos">356</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="Postgres.Generator-357"><a href="#Postgres.Generator-357"><span class="linenos">357</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">BitwiseXor</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="Postgres.Generator-358"><a href="#Postgres.Generator-358"><span class="linenos">358</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ColumnDef</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">_auto_increment_to_serial</span><span class="p">,</span> <span class="n">_serial_to_generated</span><span class="p">]),</span>
+</span><span id="Postgres.Generator-359"><a href="#Postgres.Generator-359"><span class="linenos">359</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="Postgres.Generator-360"><a href="#Postgres.Generator-360"><span class="linenos">360</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="Postgres.Generator-361"><a href="#Postgres.Generator-361"><span class="linenos">361</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_scalar_sql</span><span class="p">,</span>
+</span><span id="Postgres.Generator-362"><a href="#Postgres.Generator-362"><span class="linenos">362</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtract</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;#&gt;&quot;</span><span class="p">),</span>
+</span><span id="Postgres.Generator-363"><a href="#Postgres.Generator-363"><span class="linenos">363</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBExtractScalar</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;#&gt;&gt;&quot;</span><span class="p">),</span>
+</span><span id="Postgres.Generator-364"><a href="#Postgres.Generator-364"><span class="linenos">364</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">JSONBContains</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="Postgres.Generator-365"><a href="#Postgres.Generator-365"><span class="linenos">365</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pow</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="Postgres.Generator-366"><a href="#Postgres.Generator-366"><span class="linenos">366</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">CurrentDate</span><span class="p">:</span> <span class="n">no_paren_current_date_sql</span><span class="p">,</span>
+</span><span id="Postgres.Generator-367"><a href="#Postgres.Generator-367"><span class="linenos">367</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="o">*</span><span class="n">_</span><span class="p">:</span> <span class="s2">&quot;CURRENT_TIMESTAMP&quot;</span><span class="p">,</span>
+</span><span id="Postgres.Generator-368"><a href="#Postgres.Generator-368"><span class="linenos">368</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateAdd</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">&quot;+&quot;</span><span class="p">),</span>
+</span><span id="Postgres.Generator-369"><a href="#Postgres.Generator-369"><span class="linenos">369</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="Postgres.Generator-370"><a href="#Postgres.Generator-370"><span class="linenos">370</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateSub</span><span class="p">:</span> <span class="n">_date_add_sql</span><span class="p">(</span><span class="s2">&quot;-&quot;</span><span class="p">),</span>
+</span><span id="Postgres.Generator-371"><a href="#Postgres.Generator-371"><span class="linenos">371</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">DateDiff</span><span class="p">:</span> <span class="n">_date_diff_sql</span><span class="p">,</span>
+</span><span id="Postgres.Generator-372"><a href="#Postgres.Generator-372"><span class="linenos">372</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="Postgres.Generator-373"><a href="#Postgres.Generator-373"><span class="linenos">373</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="Postgres.Generator-374"><a href="#Postgres.Generator-374"><span class="linenos">374</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Max</span><span class="p">:</span> <span class="n">max_or_greatest</span><span class="p">,</span>
+</span><span id="Postgres.Generator-375"><a href="#Postgres.Generator-375"><span class="linenos">375</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">MapFromEntries</span><span class="p">:</span> <span class="n">no_map_from_entries_sql</span><span class="p">,</span>
+</span><span id="Postgres.Generator-376"><a href="#Postgres.Generator-376"><span class="linenos">376</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Min</span><span class="p">:</span> <span class="n">min_or_least</span><span class="p">,</span>
+</span><span id="Postgres.Generator-377"><a href="#Postgres.Generator-377"><span class="linenos">377</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayOverlaps</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;&amp;&amp;&quot;</span><span class="p">),</span>
+</span><span id="Postgres.Generator-378"><a href="#Postgres.Generator-378"><span class="linenos">378</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContains</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;@&gt;&quot;</span><span class="p">),</span>
+</span><span id="Postgres.Generator-379"><a href="#Postgres.Generator-379"><span class="linenos">379</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArrayContained</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;&lt;@&quot;</span><span class="p">),</span>
+</span><span id="Postgres.Generator-380"><a href="#Postgres.Generator-380"><span class="linenos">380</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Merge</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">_remove_target_from_merge</span><span class="p">]),</span>
+</span><span id="Postgres.Generator-381"><a href="#Postgres.Generator-381"><span class="linenos">381</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Pivot</span><span class="p">:</span> <span class="n">no_pivot_sql</span><span class="p">,</span>
+</span><span id="Postgres.Generator-382"><a href="#Postgres.Generator-382"><span class="linenos">382</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpLike</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="Postgres.Generator-383"><a href="#Postgres.Generator-383"><span class="linenos">383</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">RegexpILike</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="Postgres.Generator-384"><a href="#Postgres.Generator-384"><span class="linenos">384</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="Postgres.Generator-385"><a href="#Postgres.Generator-385"><span class="linenos">385</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">StrToTime</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;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="Postgres.Generator-386"><a href="#Postgres.Generator-386"><span class="linenos">386</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Substring</span><span class="p">:</span> <span class="n">_substring_sql</span><span class="p">,</span>
+</span><span id="Postgres.Generator-387"><a href="#Postgres.Generator-387"><span class="linenos">387</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="Postgres.Generator-388"><a href="#Postgres.Generator-388"><span class="linenos">388</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="Postgres.Generator-389"><a href="#Postgres.Generator-389"><span class="linenos">389</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 class="n">e</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;TO_CHAR(</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="Postgres.Generator-390"><a href="#Postgres.Generator-390"><span class="linenos">390</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TableSample</span><span class="p">:</span> <span class="n">no_tablesample_sql</span><span class="p">,</span>
+</span><span id="Postgres.Generator-391"><a href="#Postgres.Generator-391"><span class="linenos">391</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ToChar</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">function_fallback_sql</span><span class="p">(</span><span class="n">e</span><span class="p">),</span>
+</span><span id="Postgres.Generator-392"><a href="#Postgres.Generator-392"><span class="linenos">392</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">Trim</span><span class="p">:</span> <span class="n">trim_sql</span><span class="p">,</span>
+</span><span id="Postgres.Generator-393"><a href="#Postgres.Generator-393"><span class="linenos">393</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TryCast</span><span class="p">:</span> <span class="n">no_trycast_sql</span><span class="p">,</span>
+</span><span id="Postgres.Generator-394"><a href="#Postgres.Generator-394"><span class="linenos">394</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TsOrDsToDate</span><span class="p">:</span> <span class="n">ts_or_ds_to_date_sql</span><span class="p">(</span><span class="s2">&quot;postgres&quot;</span><span class="p">),</span>
+</span><span id="Postgres.Generator-395"><a href="#Postgres.Generator-395"><span class="linenos">395</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">UnixToTime</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;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">)&quot;</span><span class="p">,</span>
+</span><span id="Postgres.Generator-396"><a href="#Postgres.Generator-396"><span class="linenos">396</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="Postgres.Generator-397"><a href="#Postgres.Generator-397"><span class="linenos">397</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">GroupConcat</span><span class="p">:</span> <span class="n">_string_agg_sql</span><span class="p">,</span>
+</span><span id="Postgres.Generator-398"><a href="#Postgres.Generator-398"><span class="linenos">398</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="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">&#39;ARRAY&#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">sql</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 class="si">}</span><span class="s2">)&quot;</span>
+</span><span id="Postgres.Generator-399"><a href="#Postgres.Generator-399"><span class="linenos">399</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">seq_get</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 class="n">exp</span><span class="o">.</span><span class="n">Select</span><span class="p">)</span>
+</span><span id="Postgres.Generator-400"><a href="#Postgres.Generator-400"><span class="linenos">400</span></a> <span class="k">else</span> <span class="sa">f</span><span class="s2">&quot;</span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">normalize_func</span><span class="p">(</span><span class="s1">&#39;ARRAY&#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">expressions</span><span class="p">(</span><span class="n">e</span><span class="p">,</span><span class="w"> </span><span class="n">flat</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span><span class="si">}</span><span class="s2">]&quot;</span><span class="p">,</span>
+</span><span id="Postgres.Generator-401"><a href="#Postgres.Generator-401"><span class="linenos">401</span></a> <span class="p">}</span>
+</span><span id="Postgres.Generator-402"><a href="#Postgres.Generator-402"><span class="linenos">402</span></a>
+</span><span id="Postgres.Generator-403"><a href="#Postgres.Generator-403"><span class="linenos">403</span></a> <span class="n">PROPERTIES_LOCATION</span> <span class="o">=</span> <span class="p">{</span>
+</span><span id="Postgres.Generator-404"><a href="#Postgres.Generator-404"><span class="linenos">404</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">PROPERTIES_LOCATION</span><span class="p">,</span>
+</span><span id="Postgres.Generator-405"><a href="#Postgres.Generator-405"><span class="linenos">405</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">TransientProperty</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 class="p">,</span>
+</span><span id="Postgres.Generator-406"><a href="#Postgres.Generator-406"><span class="linenos">406</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">VolatileProperty</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 class="p">,</span>
+</span><span id="Postgres.Generator-407"><a href="#Postgres.Generator-407"><span class="linenos">407</span></a> <span class="p">}</span>
+</span><span id="Postgres.Generator-408"><a href="#Postgres.Generator-408"><span class="linenos">408</span></a>
+</span><span id="Postgres.Generator-409"><a href="#Postgres.Generator-409"><span class="linenos">409</span></a> <span class="k">def</span> <span class="nf">bracket_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">Bracket</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="Postgres.Generator-410"><a href="#Postgres.Generator-410"><span class="linenos">410</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Forms like ARRAY[1, 2, 3][3] aren&#39;t allowed; we need to wrap the ARRAY.&quot;&quot;&quot;</span>
+</span><span id="Postgres.Generator-411"><a href="#Postgres.Generator-411"><span class="linenos">411</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span>
+</span><span id="Postgres.Generator-412"><a href="#Postgres.Generator-412"><span class="linenos">412</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
+</span><span id="Postgres.Generator-413"><a href="#Postgres.Generator-413"><span class="linenos">413</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;this&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span>
+</span><span id="Postgres.Generator-414"><a href="#Postgres.Generator-414"><span class="linenos">414</span></a>
+</span><span id="Postgres.Generator-415"><a href="#Postgres.Generator-415"><span class="linenos">415</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span></pre></div>
@@ -1929,6 +1922,18 @@ Default: True</li>
</div>
+ <div id="Postgres.Generator.QUERY_HINTS" class="classattr">
+ <div class="attr variable">
+ <span class="name">QUERY_HINTS</span> =
+<span class="default_value">False</span>
+
+
+ </div>
+ <a class="headerlink" href="#Postgres.Generator.QUERY_HINTS"></a>
+
+
+
+ </div>
<div id="Postgres.Generator.PARAMETER_TOKEN" class="classattr">
<div class="attr variable">
<span class="name">PARAMETER_TOKEN</span> =
@@ -1991,13 +1996,13 @@ Default: True</li>
</div>
<a class="headerlink" href="#Postgres.Generator.bracket_sql"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator.bracket_sql-385"><a href="#Postgres.Generator.bracket_sql-385"><span class="linenos">385</span></a> <span class="k">def</span> <span class="nf">bracket_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">Bracket</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
-</span><span id="Postgres.Generator.bracket_sql-386"><a href="#Postgres.Generator.bracket_sql-386"><span class="linenos">386</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Forms like ARRAY[1, 2, 3][3] aren&#39;t allowed; we need to wrap the ARRAY.&quot;&quot;&quot;</span>
-</span><span id="Postgres.Generator.bracket_sql-387"><a href="#Postgres.Generator.bracket_sql-387"><span class="linenos">387</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span>
-</span><span id="Postgres.Generator.bracket_sql-388"><a href="#Postgres.Generator.bracket_sql-388"><span class="linenos">388</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
-</span><span id="Postgres.Generator.bracket_sql-389"><a href="#Postgres.Generator.bracket_sql-389"><span class="linenos">389</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;this&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span>
-</span><span id="Postgres.Generator.bracket_sql-390"><a href="#Postgres.Generator.bracket_sql-390"><span class="linenos">390</span></a>
-</span><span id="Postgres.Generator.bracket_sql-391"><a href="#Postgres.Generator.bracket_sql-391"><span class="linenos">391</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_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="Postgres.Generator.bracket_sql-409"><a href="#Postgres.Generator.bracket_sql-409"><span class="linenos">409</span></a> <span class="k">def</span> <span class="nf">bracket_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">Bracket</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
+</span><span id="Postgres.Generator.bracket_sql-410"><a href="#Postgres.Generator.bracket_sql-410"><span class="linenos">410</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Forms like ARRAY[1, 2, 3][3] aren&#39;t allowed; we need to wrap the ARRAY.&quot;&quot;&quot;</span>
+</span><span id="Postgres.Generator.bracket_sql-411"><a href="#Postgres.Generator.bracket_sql-411"><span class="linenos">411</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">Array</span><span class="p">):</span>
+</span><span id="Postgres.Generator.bracket_sql-412"><a href="#Postgres.Generator.bracket_sql-412"><span class="linenos">412</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">expression</span><span class="o">.</span><span class="n">copy</span><span class="p">()</span>
+</span><span id="Postgres.Generator.bracket_sql-413"><a href="#Postgres.Generator.bracket_sql-413"><span class="linenos">413</span></a> <span class="n">expression</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s2">&quot;this&quot;</span><span class="p">,</span> <span class="n">exp</span><span class="o">.</span><span class="n">paren</span><span class="p">(</span><span class="n">expression</span><span class="o">.</span><span class="n">this</span><span class="p">,</span> <span class="n">copy</span><span class="o">=</span><span class="kc">False</span><span class="p">))</span>
+</span><span id="Postgres.Generator.bracket_sql-414"><a href="#Postgres.Generator.bracket_sql-414"><span class="linenos">414</span></a>
+</span><span id="Postgres.Generator.bracket_sql-415"><a href="#Postgres.Generator.bracket_sql-415"><span class="linenos">415</span></a> <span class="k">return</span> <span class="nb">super</span><span class="p">()</span><span class="o">.</span><span class="n">bracket_sql</span><span class="p">(</span><span class="n">expression</span><span class="p">)</span>
</span></pre></div>
@@ -2080,26 +2085,26 @@ Default: True</li>
</div>
<a class="headerlink" href="#Postgres.Generator.can_identify"></a>
- <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator.can_identify-247"><a href="#Postgres.Generator.can_identify-247"><span class="linenos">247</span></a> <span class="nd">@classmethod</span>
-</span><span id="Postgres.Generator.can_identify-248"><a href="#Postgres.Generator.can_identify-248"><span class="linenos">248</span></a> <span class="k">def</span> <span class="nf">can_identify</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">identify</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="nb">bool</span> <span class="o">=</span> <span class="s2">&quot;safe&quot;</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
-</span><span id="Postgres.Generator.can_identify-249"><a href="#Postgres.Generator.can_identify-249"><span class="linenos">249</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Checks if text can be identified given an identify option.</span>
-</span><span id="Postgres.Generator.can_identify-250"><a href="#Postgres.Generator.can_identify-250"><span class="linenos">250</span></a>
-</span><span id="Postgres.Generator.can_identify-251"><a href="#Postgres.Generator.can_identify-251"><span class="linenos">251</span></a><span class="sd"> Args:</span>
-</span><span id="Postgres.Generator.can_identify-252"><a href="#Postgres.Generator.can_identify-252"><span class="linenos">252</span></a><span class="sd"> text: The text to check.</span>
-</span><span id="Postgres.Generator.can_identify-253"><a href="#Postgres.Generator.can_identify-253"><span class="linenos">253</span></a><span class="sd"> identify:</span>
-</span><span id="Postgres.Generator.can_identify-254"><a href="#Postgres.Generator.can_identify-254"><span class="linenos">254</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span>
-</span><span id="Postgres.Generator.can_identify-255"><a href="#Postgres.Generator.can_identify-255"><span class="linenos">255</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span>
-</span><span id="Postgres.Generator.can_identify-256"><a href="#Postgres.Generator.can_identify-256"><span class="linenos">256</span></a>
-</span><span id="Postgres.Generator.can_identify-257"><a href="#Postgres.Generator.can_identify-257"><span class="linenos">257</span></a><span class="sd"> Returns:</span>
-</span><span id="Postgres.Generator.can_identify-258"><a href="#Postgres.Generator.can_identify-258"><span class="linenos">258</span></a><span class="sd"> Whether or not the given text can be identified.</span>
-</span><span id="Postgres.Generator.can_identify-259"><a href="#Postgres.Generator.can_identify-259"><span class="linenos">259</span></a><span class="sd"> &quot;&quot;&quot;</span>
-</span><span id="Postgres.Generator.can_identify-260"><a href="#Postgres.Generator.can_identify-260"><span class="linenos">260</span></a> <span class="k">if</span> <span class="n">identify</span> <span class="ow">is</span> <span class="kc">True</span> <span class="ow">or</span> <span class="n">identify</span> <span class="o">==</span> <span class="s2">&quot;always&quot;</span><span class="p">:</span>
-</span><span id="Postgres.Generator.can_identify-261"><a href="#Postgres.Generator.can_identify-261"><span class="linenos">261</span></a> <span class="k">return</span> <span class="kc">True</span>
-</span><span id="Postgres.Generator.can_identify-262"><a href="#Postgres.Generator.can_identify-262"><span class="linenos">262</span></a>
-</span><span id="Postgres.Generator.can_identify-263"><a href="#Postgres.Generator.can_identify-263"><span class="linenos">263</span></a> <span class="k">if</span> <span class="n">identify</span> <span class="o">==</span> <span class="s2">&quot;safe&quot;</span><span class="p">:</span>
-</span><span id="Postgres.Generator.can_identify-264"><a href="#Postgres.Generator.can_identify-264"><span class="linenos">264</span></a> <span class="k">return</span> <span class="ow">not</span> <span class="bp">cls</span><span class="o">.</span><span class="n">case_sensitive</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
-</span><span id="Postgres.Generator.can_identify-265"><a href="#Postgres.Generator.can_identify-265"><span class="linenos">265</span></a>
-</span><span id="Postgres.Generator.can_identify-266"><a href="#Postgres.Generator.can_identify-266"><span class="linenos">266</span></a> <span class="k">return</span> <span class="kc">False</span>
+ <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator.can_identify-246"><a href="#Postgres.Generator.can_identify-246"><span class="linenos">246</span></a> <span class="nd">@classmethod</span>
+</span><span id="Postgres.Generator.can_identify-247"><a href="#Postgres.Generator.can_identify-247"><span class="linenos">247</span></a> <span class="k">def</span> <span class="nf">can_identify</span><span class="p">(</span><span class="bp">cls</span><span class="p">,</span> <span class="n">text</span><span class="p">:</span> <span class="nb">str</span><span class="p">,</span> <span class="n">identify</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="nb">bool</span> <span class="o">=</span> <span class="s2">&quot;safe&quot;</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">bool</span><span class="p">:</span>
+</span><span id="Postgres.Generator.can_identify-248"><a href="#Postgres.Generator.can_identify-248"><span class="linenos">248</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;Checks if text can be identified given an identify option.</span>
+</span><span id="Postgres.Generator.can_identify-249"><a href="#Postgres.Generator.can_identify-249"><span class="linenos">249</span></a>
+</span><span id="Postgres.Generator.can_identify-250"><a href="#Postgres.Generator.can_identify-250"><span class="linenos">250</span></a><span class="sd"> Args:</span>
+</span><span id="Postgres.Generator.can_identify-251"><a href="#Postgres.Generator.can_identify-251"><span class="linenos">251</span></a><span class="sd"> text: The text to check.</span>
+</span><span id="Postgres.Generator.can_identify-252"><a href="#Postgres.Generator.can_identify-252"><span class="linenos">252</span></a><span class="sd"> identify:</span>
+</span><span id="Postgres.Generator.can_identify-253"><a href="#Postgres.Generator.can_identify-253"><span class="linenos">253</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span>
+</span><span id="Postgres.Generator.can_identify-254"><a href="#Postgres.Generator.can_identify-254"><span class="linenos">254</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span>
+</span><span id="Postgres.Generator.can_identify-255"><a href="#Postgres.Generator.can_identify-255"><span class="linenos">255</span></a>
+</span><span id="Postgres.Generator.can_identify-256"><a href="#Postgres.Generator.can_identify-256"><span class="linenos">256</span></a><span class="sd"> Returns:</span>
+</span><span id="Postgres.Generator.can_identify-257"><a href="#Postgres.Generator.can_identify-257"><span class="linenos">257</span></a><span class="sd"> Whether or not the given text can be identified.</span>
+</span><span id="Postgres.Generator.can_identify-258"><a href="#Postgres.Generator.can_identify-258"><span class="linenos">258</span></a><span class="sd"> &quot;&quot;&quot;</span>
+</span><span id="Postgres.Generator.can_identify-259"><a href="#Postgres.Generator.can_identify-259"><span class="linenos">259</span></a> <span class="k">if</span> <span class="n">identify</span> <span class="ow">is</span> <span class="kc">True</span> <span class="ow">or</span> <span class="n">identify</span> <span class="o">==</span> <span class="s2">&quot;always&quot;</span><span class="p">:</span>
+</span><span id="Postgres.Generator.can_identify-260"><a href="#Postgres.Generator.can_identify-260"><span class="linenos">260</span></a> <span class="k">return</span> <span class="kc">True</span>
+</span><span id="Postgres.Generator.can_identify-261"><a href="#Postgres.Generator.can_identify-261"><span class="linenos">261</span></a>
+</span><span id="Postgres.Generator.can_identify-262"><a href="#Postgres.Generator.can_identify-262"><span class="linenos">262</span></a> <span class="k">if</span> <span class="n">identify</span> <span class="o">==</span> <span class="s2">&quot;safe&quot;</span><span class="p">:</span>
+</span><span id="Postgres.Generator.can_identify-263"><a href="#Postgres.Generator.can_identify-263"><span class="linenos">263</span></a> <span class="k">return</span> <span class="ow">not</span> <span class="bp">cls</span><span class="o">.</span><span class="n">case_sensitive</span><span class="p">(</span><span class="n">text</span><span class="p">)</span>
+</span><span id="Postgres.Generator.can_identify-264"><a href="#Postgres.Generator.can_identify-264"><span class="linenos">264</span></a>
+</span><span id="Postgres.Generator.can_identify-265"><a href="#Postgres.Generator.can_identify-265"><span class="linenos">265</span></a> <span class="k">return</span> <span class="kc">False</span>
</span></pre></div>
@@ -2266,30 +2271,6 @@ Default: True</li>
</div>
- <div id="Postgres.Generator.RAW_START" class="classattr">
- <div class="attr variable">
- <span class="name">RAW_START</span><span class="annotation">: Optional[str]</span> =
-<span class="default_value">None</span>
-
-
- </div>
- <a class="headerlink" href="#Postgres.Generator.RAW_START"></a>
-
-
-
- </div>
- <div id="Postgres.Generator.RAW_END" class="classattr">
- <div class="attr variable">
- <span class="name">RAW_END</span><span class="annotation">: Optional[str]</span> =
-<span class="default_value">None</span>
-
-
- </div>
- <a class="headerlink" href="#Postgres.Generator.RAW_END"></a>
-
-
-
- </div>
<div class="inherited">
<h5>Inherited Members</h5>
<dl>
@@ -2307,7 +2288,10 @@ Default: True</li>
<dd id="Postgres.Generator.RENAME_TABLE_WITH_DB" class="variable"><a href="../generator.html#Generator.RENAME_TABLE_WITH_DB">RENAME_TABLE_WITH_DB</a></dd>
<dd id="Postgres.Generator.GROUPINGS_SEP" class="variable"><a href="../generator.html#Generator.GROUPINGS_SEP">GROUPINGS_SEP</a></dd>
<dd id="Postgres.Generator.INDEX_ON" class="variable"><a href="../generator.html#Generator.INDEX_ON">INDEX_ON</a></dd>
+ <dd id="Postgres.Generator.QUERY_HINT_SEP" class="variable"><a href="../generator.html#Generator.QUERY_HINT_SEP">QUERY_HINT_SEP</a></dd>
<dd id="Postgres.Generator.IS_BOOL_ALLOWED" class="variable"><a href="../generator.html#Generator.IS_BOOL_ALLOWED">IS_BOOL_ALLOWED</a></dd>
+ <dd id="Postgres.Generator.DUPLICATE_KEY_UPDATE_WITH_SET" class="variable"><a href="../generator.html#Generator.DUPLICATE_KEY_UPDATE_WITH_SET">DUPLICATE_KEY_UPDATE_WITH_SET</a></dd>
+ <dd id="Postgres.Generator.LIMIT_IS_TOP" class="variable"><a href="../generator.html#Generator.LIMIT_IS_TOP">LIMIT_IS_TOP</a></dd>
<dd id="Postgres.Generator.STAR_MAPPING" class="variable"><a href="../generator.html#Generator.STAR_MAPPING">STAR_MAPPING</a></dd>
<dd id="Postgres.Generator.TIME_PART_SINGULARS" class="variable"><a href="../generator.html#Generator.TIME_PART_SINGULARS">TIME_PART_SINGULARS</a></dd>
<dd id="Postgres.Generator.TOKEN_MAPPING" class="variable"><a href="../generator.html#Generator.TOKEN_MAPPING">TOKEN_MAPPING</a></dd>
@@ -2321,6 +2305,7 @@ Default: True</li>
<dd id="Postgres.Generator.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="../generator.html#Generator.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd>
<dd id="Postgres.Generator.STRICT_STRING_CONCAT" class="variable"><a href="../generator.html#Generator.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd>
<dd id="Postgres.Generator.NORMALIZE_FUNCTIONS" class="variable"><a href="../generator.html#Generator.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd>
+ <dd id="Postgres.Generator.ESCAPE_LINE_BREAK" class="variable"><a href="../generator.html#Generator.ESCAPE_LINE_BREAK">ESCAPE_LINE_BREAK</a></dd>
<dd id="Postgres.Generator.pretty" class="variable"><a href="../generator.html#Generator.pretty">pretty</a></dd>
<dd id="Postgres.Generator.identify" class="variable"><a href="../generator.html#Generator.identify">identify</a></dd>
<dd id="Postgres.Generator.normalize" class="variable"><a href="../generator.html#Generator.normalize">normalize</a></dd>