1
0
Fork 0

Merging upstream version 18.5.1.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-13 21:02:36 +01:00
parent ad94fdbf21
commit 11b24b93ea
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
67 changed files with 32690 additions and 32450 deletions

View file

@ -1,6 +1,35 @@
Changelog Changelog
========= =========
## [v18.5.0] - 2023-09-13
### :sparkles: New Features
- [`72e939e`](https://github.com/tobymao/sqlglot/commit/72e939e901eb0b2adde6f66ebe31bb8c498f70c6) - **parser**: allow functions in FETCH clause *(PR [#2207](https://github.com/tobymao/sqlglot/pull/2207) by [@GeorgeSittas](https://github.com/GeorgeSittas))*
- :arrow_lower_right: *addresses issue [#2204](undefined) opened by [@sashindeitidata](https://github.com/sashindeitidata)*
- [`d944e17`](https://github.com/tobymao/sqlglot/commit/d944e1747b8729b9b0cbec5664711eff12c53cea) - **mysql**: add support for [UN]LOCK TABLES as a Command *(PR [#2212](https://github.com/tobymao/sqlglot/pull/2212) by [@GeorgeSittas](https://github.com/GeorgeSittas))*
- :arrow_lower_right: *addresses issue [#2210](undefined) opened by [@Nitrino](https://github.com/Nitrino)*
### :bug: Bug Fixes
- [`416b341`](https://github.com/tobymao/sqlglot/commit/416b341c45cd0a766a9919cc5a11b5f90dc3b3f3) - use SUPPORTS_USER_DEFINED_TYPES to set udt in schema _to_data_type *(PR [#2203](https://github.com/tobymao/sqlglot/pull/2203) by [@GeorgeSittas](https://github.com/GeorgeSittas))*
- [`14c1b3b`](https://github.com/tobymao/sqlglot/commit/14c1b3b60c3d7473d488b78293055be2db428add) - **mysql**: add support for index type in the UNIQUE KEY constraint *(PR [#2211](https://github.com/tobymao/sqlglot/pull/2211) by [@GeorgeSittas](https://github.com/GeorgeSittas))*
- :arrow_lower_right: *fixes issue [#2209](undefined) opened by [@Nitrino](https://github.com/Nitrino)*
- [`5c7210a`](https://github.com/tobymao/sqlglot/commit/5c7210ab113c94da0c77a05166a2e8d452764c84) - **oracle**: allow CONNECT BY / START WITH to be interchanged *(PR [#2208](https://github.com/tobymao/sqlglot/pull/2208) by [@GeorgeSittas](https://github.com/GeorgeSittas))*
- :arrow_lower_right: *fixes issue [#2205](undefined) opened by [@sashindeitidata](https://github.com/sashindeitidata)*
## [v18.4.1] - 2023-09-12
### :boom: BREAKING CHANGES
- due to [`f85b535`](https://github.com/tobymao/sqlglot/commit/f85b535f2b74279d63cc60c456ecdc73096389f5) - parse schema UDTs into DataTypes instead of identifiers *(PR [#2201](https://github.com/tobymao/sqlglot/pull/2201) by [@GeorgeSittas](https://github.com/GeorgeSittas))*:
parse schema UDTs into DataTypes instead of identifiers (#2201)
### :bug: Bug Fixes
- [`a228656`](https://github.com/tobymao/sqlglot/commit/a2286563303d98570cb73104795821970382ed3a) - **tokenizer**: treat quote as escape only if its followed by itself *(PR [#2199](https://github.com/tobymao/sqlglot/pull/2199) by [@GeorgeSittas](https://github.com/GeorgeSittas))*
- :arrow_lower_right: *fixes issue [#2198](undefined) opened by [@czrobert](https://github.com/czrobert)*
- [`fa09688`](https://github.com/tobymao/sqlglot/commit/fa09688a422d322a60bd539f537bd9e6bf49017a) - **mysql**: for update regression due to list comprehensions closes [#2200](https://github.com/tobymao/sqlglot/pull/2200) *(commit by [@tobymao](https://github.com/tobymao))*
- [`f85b535`](https://github.com/tobymao/sqlglot/commit/f85b535f2b74279d63cc60c456ecdc73096389f5) - parse schema UDTs into DataTypes instead of identifiers *(PR [#2201](https://github.com/tobymao/sqlglot/pull/2201) by [@GeorgeSittas](https://github.com/GeorgeSittas))*
## [v18.4.0] - 2023-09-12 ## [v18.4.0] - 2023-09-12
### :sparkles: New Features ### :sparkles: New Features
- [`5e2042a`](https://github.com/tobymao/sqlglot/commit/5e2042aaa0e4be08d02c369a660d3b37ce78b567) - add TINYTEXT and TINYBLOB types *(PR [#2182](https://github.com/tobymao/sqlglot/pull/2182) by [@Nitrino](https://github.com/Nitrino))* - [`5e2042a`](https://github.com/tobymao/sqlglot/commit/5e2042aaa0e4be08d02c369a660d3b37ce78b567) - add TINYTEXT and TINYBLOB types *(PR [#2182](https://github.com/tobymao/sqlglot/pull/2182) by [@Nitrino](https://github.com/Nitrino))*
@ -1371,3 +1400,5 @@ Changelog
[v18.2.0]: https://github.com/tobymao/sqlglot/compare/v18.1.0...v18.2.0 [v18.2.0]: https://github.com/tobymao/sqlglot/compare/v18.1.0...v18.2.0
[v18.3.0]: https://github.com/tobymao/sqlglot/compare/v18.2.0...v18.3.0 [v18.3.0]: https://github.com/tobymao/sqlglot/compare/v18.2.0...v18.3.0
[v18.4.0]: https://github.com/tobymao/sqlglot/compare/v18.3.0...v18.4.0 [v18.4.0]: https://github.com/tobymao/sqlglot/compare/v18.3.0...v18.4.0
[v18.4.1]: https://github.com/tobymao/sqlglot/compare/v18.4.0...v18.4.1
[v18.5.0]: https://github.com/tobymao/sqlglot/compare/v18.4.1...v18.5.0

File diff suppressed because one or more lines are too long

View file

@ -51,8 +51,8 @@
<div class="pdoc-code codehilite"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos">1</span></a><span class="c1"># file generated by setuptools_scm</span> <div class="pdoc-code codehilite"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos">1</span></a><span class="c1"># file generated by setuptools_scm</span>
</span><span id="L-2"><a href="#L-2"><span class="linenos">2</span></a><span class="c1"># don&#39;t change, don&#39;t track in version control</span> </span><span id="L-2"><a href="#L-2"><span class="linenos">2</span></a><span class="c1"># don&#39;t change, don&#39;t track in version control</span>
</span><span id="L-3"><a href="#L-3"><span class="linenos">3</span></a><span class="n">__version__</span> <span class="o">=</span> <span class="n">version</span> <span class="o">=</span> <span class="s1">&#39;18.4.0&#39;</span> </span><span id="L-3"><a href="#L-3"><span class="linenos">3</span></a><span class="n">__version__</span> <span class="o">=</span> <span class="n">version</span> <span class="o">=</span> <span class="s1">&#39;18.5.0&#39;</span>
</span><span id="L-4"><a href="#L-4"><span class="linenos">4</span></a><span class="n">__version_tuple__</span> <span class="o">=</span> <span class="n">version_tuple</span> <span class="o">=</span> <span class="p">(</span><span class="mi">18</span><span class="p">,</span> <span class="mi">4</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span> </span><span id="L-4"><a href="#L-4"><span class="linenos">4</span></a><span class="n">__version_tuple__</span> <span class="o">=</span> <span class="n">version_tuple</span> <span class="o">=</span> <span class="p">(</span><span class="mi">18</span><span class="p">,</span> <span class="mi">5</span><span class="p">,</span> <span class="mi">0</span><span class="p">)</span>
</span></pre></div> </span></pre></div>

View file

@ -777,7 +777,7 @@
<div class="attr function"> <div class="attr function">
<span class="def">def</span> <span class="def">def</span>
<span class="name">createDataFrame</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">data</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097770296544&#39;</span><span class="o">&gt;</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097770296544&#39;</span><span class="o">&gt;</span><span class="p">],</span> <span class="n">Tuple</span><span class="p">]]</span>,</span><span class="param"> <span class="n">schema</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097770557440&#39;</span><span class="o">&gt;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">samplingRatio</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">verifySchema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span> <span class="name">createDataFrame</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">data</span><span class="p">:</span> <span class="n">Sequence</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="n">Dict</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837312855216&#39;</span><span class="o">&gt;</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837312855216&#39;</span><span class="o">&gt;</span><span class="p">],</span> <span class="n">Tuple</span><span class="p">]]</span>,</span><span class="param"> <span class="n">schema</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837314723616&#39;</span><span class="o">&gt;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">samplingRatio</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">float</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">verifySchema</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
<label class="view-source-button" for="SparkSession.createDataFrame-view-source"><span>View Source</span></label> <label class="view-source-button" for="SparkSession.createDataFrame-view-source"><span>View Source</span></label>
@ -1829,7 +1829,7 @@
<input id="DataFrame.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <input id="DataFrame.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function"> <div class="attr function">
<span class="name">DataFrame</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">spark</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097775220000&#39;</span><span class="o">&gt;</span>,</span><span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Select">sqlglot.expressions.Select</a></span>,</span><span class="param"> <span class="n">branch_id</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">sequence_id</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">last_op</span><span class="p">:</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">dataframe</span><span class="o">.</span><span class="n">sql</span><span class="o">.</span><span class="n">operations</span><span class="o">.</span><span class="n">Operation</span> <span class="o">=</span> <span class="o">&lt;</span><span class="n">Operation</span><span class="o">.</span><span class="n">INIT</span><span class="p">:</span> <span class="o">-</span><span class="mi">1</span><span class="o">&gt;</span>,</span><span class="param"> <span class="n">pending_hints</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">output_expression_container</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097775439296&#39;</span><span class="o">&gt;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span>)</span> <span class="name">DataFrame</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">spark</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837317713728&#39;</span><span class="o">&gt;</span>,</span><span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n"><a href="../expressions.html#Select">sqlglot.expressions.Select</a></span>,</span><span class="param"> <span class="n">branch_id</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">sequence_id</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">last_op</span><span class="p">:</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">dataframe</span><span class="o">.</span><span class="n">sql</span><span class="o">.</span><span class="n">operations</span><span class="o">.</span><span class="n">Operation</span> <span class="o">=</span> <span class="o">&lt;</span><span class="n">Operation</span><span class="o">.</span><span class="n">INIT</span><span class="p">:</span> <span class="o">-</span><span class="mi">1</span><span class="o">&gt;</span>,</span><span class="param"> <span class="n">pending_hints</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="n">List</span><span class="p">[</span><span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">output_expression_container</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837317947568&#39;</span><span class="o">&gt;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span>)</span>
<label class="view-source-button" for="DataFrame.__init__-view-source"><span>View Source</span></label> <label class="view-source-button" for="DataFrame.__init__-view-source"><span>View Source</span></label>
@ -2018,7 +2018,7 @@
<div class="attr function"> <div class="attr function">
<span class="def">def</span> <span class="def">def</span>
<span class="name">sql</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">dialect</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097771201312&#39;</span><span class="o">&gt;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">optimize</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span>:</span></span> <span class="name">sql</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">dialect</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837313594752&#39;</span><span class="o">&gt;</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">optimize</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]</span>:</span></span>
<label class="view-source-button" for="DataFrame.sql-view-source"><span>View Source</span></label> <label class="view-source-button" for="DataFrame.sql-view-source"><span>View Source</span></label>
@ -2773,7 +2773,7 @@ is unlikely to come up.</p>
<div class="decorator">@operation(Operation.FROM)</div> <div class="decorator">@operation(Operation.FROM)</div>
<span class="def">def</span> <span class="def">def</span>
<span class="name">fillna</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097769217408&#39;</span><span class="o">&gt;</span>,</span><span class="param"> <span class="n">subset</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span> <span class="name">fillna</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837311755664&#39;</span><span class="o">&gt;</span>,</span><span class="param"> <span class="n">subset</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="o">...</span><span class="p">],</span> <span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
<label class="view-source-button" for="DataFrame.fillna-view-source"><span>View Source</span></label> <label class="view-source-button" for="DataFrame.fillna-view-source"><span>View Source</span></label>
@ -2842,7 +2842,7 @@ and check if it matches the type of the value provided. If not then make it null
<div class="decorator">@operation(Operation.FROM)</div> <div class="decorator">@operation(Operation.FROM)</div>
<span class="def">def</span> <span class="def">def</span>
<span class="name">replace</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">to_replace</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Dict</span><span class="p">]</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">subset</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">Collection</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097769398448&#39;</span><span class="o">&gt;</span><span class="p">],</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097769398448&#39;</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span> <span class="name">replace</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">to_replace</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">Dict</span><span class="p">]</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">bool</span><span class="p">,</span> <span class="nb">int</span><span class="p">,</span> <span class="nb">float</span><span class="p">,</span> <span class="nb">str</span><span class="p">,</span> <span class="n">List</span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span>,</span><span class="param"> <span class="n">subset</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="n">Collection</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837311922624&#39;</span><span class="o">&gt;</span><span class="p">],</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837311922624&#39;</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span> <span class="o">=</span> <span class="kc">None</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
<label class="view-source-button" for="DataFrame.replace-view-source"><span>View Source</span></label> <label class="view-source-button" for="DataFrame.replace-view-source"><span>View Source</span></label>
@ -3047,7 +3047,7 @@ and check if it matches the type of the value provided. If not then make it null
<div class="decorator">@operation(Operation.NO_OP)</div> <div class="decorator">@operation(Operation.NO_OP)</div>
<span class="def">def</span> <span class="def">def</span>
<span class="name">repartition</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">numPartitions</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097769558064&#39;</span><span class="o">&gt;</span><span class="p">]</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097769646224&#39;</span><span class="o">&gt;</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span> <span class="name">repartition</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">numPartitions</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="nb">int</span><span class="p">,</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837312058512&#39;</span><span class="o">&gt;</span><span class="p">]</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837312187264&#39;</span><span class="o">&gt;</span></span><span class="return-annotation">) -> <span class="n"><a href="#DataFrame">DataFrame</a></span>:</span></span>
<label class="view-source-button" for="DataFrame.repartition-view-source"><span>View Source</span></label> <label class="view-source-button" for="DataFrame.repartition-view-source"><span>View Source</span></label>
@ -3757,7 +3757,7 @@ and check if it matches the type of the value provided. If not then make it null
<input id="Column.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <input id="Column.__init__-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr function"> <div class="attr function">
<span class="name">Column</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097773287504&#39;</span><span class="o">&gt;</span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span></span>)</span> <span class="name">Column</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="n">expression</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837313928208&#39;</span><span class="o">&gt;</span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span></span>)</span>
<label class="view-source-button" for="Column.__init__-view-source"><span>View Source</span></label> <label class="view-source-button" for="Column.__init__-view-source"><span>View Source</span></label>
@ -3801,7 +3801,7 @@ and check if it matches the type of the value provided. If not then make it null
<div class="decorator">@classmethod</div> <div class="decorator">@classmethod</div>
<span class="def">def</span> <span class="def">def</span>
<span class="name">ensure_col</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097769725792&#39;</span><span class="o">&gt;</span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span> <span class="name">ensure_col</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">value</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837312269808&#39;</span><span class="o">&gt;</span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">,</span> <span class="n">NoneType</span><span class="p">]</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
<label class="view-source-button" for="Column.ensure_col-view-source"><span>View Source</span></label> <label class="view-source-button" for="Column.ensure_col-view-source"><span>View Source</span></label>
@ -3822,7 +3822,7 @@ and check if it matches the type of the value provided. If not then make it null
<div class="decorator">@classmethod</div> <div class="decorator">@classmethod</div>
<span class="def">def</span> <span class="def">def</span>
<span class="name">ensure_cols</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">args</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097770030032&#39;</span><span class="o">&gt;</span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="n"><a href="#Column">Column</a></span><span class="p">]</span>:</span></span> <span class="name">ensure_cols</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">args</span><span class="p">:</span> <span class="n">List</span><span class="p">[</span><span class="n">Union</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837312553392&#39;</span><span class="o">&gt;</span><span class="p">,</span> <span class="n"><a href="../expressions.html#Expression">sqlglot.expressions.Expression</a></span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n">List</span><span class="p">[</span><span class="n"><a href="#Column">Column</a></span><span class="p">]</span>:</span></span>
<label class="view-source-button" for="Column.ensure_cols-view-source"><span>View Source</span></label> <label class="view-source-button" for="Column.ensure_cols-view-source"><span>View Source</span></label>
@ -3843,7 +3843,7 @@ and check if it matches the type of the value provided. If not then make it null
<div class="decorator">@classmethod</div> <div class="decorator">@classmethod</div>
<span class="def">def</span> <span class="def">def</span>
<span class="name">invoke_anonymous_function</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">column</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097770204768&#39;</span><span class="o">&gt;</span><span class="p">]</span>,</span><span class="param"> <span class="n">func_name</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097769918512&#39;</span><span class="o">&gt;</span><span class="p">]</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span> <span class="name">invoke_anonymous_function</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">column</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837311833936&#39;</span><span class="o">&gt;</span><span class="p">]</span>,</span><span class="param"> <span class="n">func_name</span><span class="p">:</span> <span class="nb">str</span>,</span><span class="param"> <span class="o">*</span><span class="n">args</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837312381856&#39;</span><span class="o">&gt;</span><span class="p">]</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
<label class="view-source-button" for="Column.invoke_anonymous_function-view-source"><span>View Source</span></label> <label class="view-source-button" for="Column.invoke_anonymous_function-view-source"><span>View Source</span></label>
@ -3870,7 +3870,7 @@ and check if it matches the type of the value provided. If not then make it null
<div class="decorator">@classmethod</div> <div class="decorator">@classmethod</div>
<span class="def">def</span> <span class="def">def</span>
<span class="name">invoke_expression_over_column</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">column</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097769971936&#39;</span><span class="o">&gt;</span><span class="p">]</span>,</span><span class="param"> <span class="n">callable_expression</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span> <span class="name">invoke_expression_over_column</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="n">column</span><span class="p">:</span> <span class="n">Optional</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837312308880&#39;</span><span class="o">&gt;</span><span class="p">]</span>,</span><span class="param"> <span class="n">callable_expression</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
<label class="view-source-button" for="Column.invoke_expression_over_column-view-source"><span>View Source</span></label> <label class="view-source-button" for="Column.invoke_expression_over_column-view-source"><span>View Source</span></label>
@ -3907,7 +3907,7 @@ and check if it matches the type of the value provided. If not then make it null
<div class="attr function"> <div class="attr function">
<span class="def">def</span> <span class="def">def</span>
<span class="name">binary_op</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">klass</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="n">other</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097769799344&#39;</span><span class="o">&gt;</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span> <span class="name">binary_op</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">klass</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="n">other</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837312651840&#39;</span><span class="o">&gt;</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
<label class="view-source-button" for="Column.binary_op-view-source"><span>View Source</span></label> <label class="view-source-button" for="Column.binary_op-view-source"><span>View Source</span></label>
@ -3928,7 +3928,7 @@ and check if it matches the type of the value provided. If not then make it null
<div class="attr function"> <div class="attr function">
<span class="def">def</span> <span class="def">def</span>
<span class="name">inverse_binary_op</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">klass</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="n">other</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097769792912&#39;</span><span class="o">&gt;</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span> <span class="name">inverse_binary_op</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">klass</span><span class="p">:</span> <span class="n">Callable</span>,</span><span class="param"> <span class="n">other</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837312652944&#39;</span><span class="o">&gt;</span>,</span><span class="param"> <span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
<label class="view-source-button" for="Column.inverse_binary_op-view-source"><span>View Source</span></label> <label class="view-source-button" for="Column.inverse_binary_op-view-source"><span>View Source</span></label>
@ -4486,7 +4486,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
<div class="attr function"> <div class="attr function">
<span class="def">def</span> <span class="def">def</span>
<span class="name">isin</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097768264160&#39;</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">Iterable</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097768264160&#39;</span><span class="o">&gt;</span><span class="p">]]</span></span><span class="return-annotation">):</span></span> <span class="name">isin</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837310748032&#39;</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">Iterable</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837310748032&#39;</span><span class="o">&gt;</span><span class="p">]]</span></span><span class="return-annotation">):</span></span>
<label class="view-source-button" for="Column.isin-view-source"><span>View Source</span></label> <label class="view-source-button" for="Column.isin-view-source"><span>View Source</span></label>
@ -4507,7 +4507,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
<div class="attr function"> <div class="attr function">
<span class="def">def</span> <span class="def">def</span>
<span class="name">between</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">lowerBound</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097768325376&#39;</span><span class="o">&gt;</span>,</span><span class="param"> <span class="n">upperBound</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097768366832&#39;</span><span class="o">&gt;</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span> <span class="name">between</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">lowerBound</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837310853392&#39;</span><span class="o">&gt;</span>,</span><span class="param"> <span class="n">upperBound</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837310907872&#39;</span><span class="o">&gt;</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
<label class="view-source-button" for="Column.between-view-source"><span>View Source</span></label> <label class="view-source-button" for="Column.between-view-source"><span>View Source</span></label>
@ -4542,7 +4542,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
<div class="attr function"> <div class="attr function">
<span class="def">def</span> <span class="def">def</span>
<span class="name">over</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">window</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097768440976&#39;</span><span class="o">&gt;</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span> <span class="name">over</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="n">window</span><span class="p">:</span> <span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837310981968&#39;</span><span class="o">&gt;</span></span><span class="return-annotation">) -> <span class="n"><a href="#Column">Column</a></span>:</span></span>
<label class="view-source-button" for="Column.over-view-source"><span>View Source</span></label> <label class="view-source-button" for="Column.over-view-source"><span>View Source</span></label>
@ -4787,7 +4787,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
<div class="decorator">@classmethod</div> <div class="decorator">@classmethod</div>
<span class="def">def</span> <span class="def">def</span>
<span class="name">partitionBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097768936480&#39;</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097768936480&#39;</span><span class="o">&gt;</span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span> <span class="name">partitionBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837311435968&#39;</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837311435968&#39;</span><span class="o">&gt;</span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
<label class="view-source-button" for="Window.partitionBy-view-source"><span>View Source</span></label> <label class="view-source-button" for="Window.partitionBy-view-source"><span>View Source</span></label>
@ -4808,7 +4808,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
<div class="decorator">@classmethod</div> <div class="decorator">@classmethod</div>
<span class="def">def</span> <span class="def">def</span>
<span class="name">orderBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097768951040&#39;</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097768951040&#39;</span><span class="o">&gt;</span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span> <span class="name">orderBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">cls</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837311484592&#39;</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837311484592&#39;</span><span class="o">&gt;</span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
<label class="view-source-button" for="Window.orderBy-view-source"><span>View Source</span></label> <label class="view-source-button" for="Window.orderBy-view-source"><span>View Source</span></label>
@ -5048,7 +5048,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
<div class="attr function"> <div class="attr function">
<span class="def">def</span> <span class="def">def</span>
<span class="name">partitionBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097768821168&#39;</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097768821168&#39;</span><span class="o">&gt;</span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span> <span class="name">partitionBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837311307536&#39;</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837311307536&#39;</span><span class="o">&gt;</span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
<label class="view-source-button" for="WindowSpec.partitionBy-view-source"><span>View Source</span></label> <label class="view-source-button" for="WindowSpec.partitionBy-view-source"><span>View Source</span></label>
@ -5075,7 +5075,7 @@ Sqlglot doesn't currently replicate this class so it only accepts a string</p>
<div class="attr function"> <div class="attr function">
<span class="def">def</span> <span class="def">def</span>
<span class="name">orderBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097768676064&#39;</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;140097768676064&#39;</span><span class="o">&gt;</span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span> <span class="name">orderBy</span><span class="signature pdoc-code multiline">(<span class="param"> <span class="bp">self</span>,</span><span class="param"> <span class="o">*</span><span class="n">cols</span><span class="p">:</span> <span class="n">Union</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837311073200&#39;</span><span class="o">&gt;</span><span class="p">,</span> <span class="n">List</span><span class="p">[</span><span class="o">&lt;</span><span class="n">MagicMock</span> <span class="nb">id</span><span class="o">=</span><span class="s1">&#39;139837311073200&#39;</span><span class="o">&gt;</span><span class="p">]]</span></span><span class="return-annotation">) -> <span class="n"><a href="#WindowSpec">WindowSpec</a></span>:</span></span>
<label class="view-source-button" for="WindowSpec.orderBy-view-source"><span>View Source</span></label> <label class="view-source-button" for="WindowSpec.orderBy-view-source"><span>View Source</span></label>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -558,6 +558,7 @@
<div><dt><a href="hive.html#Hive">sqlglot.dialects.hive.Hive</a></dt> <div><dt><a href="hive.html#Hive">sqlglot.dialects.hive.Hive</a></dt>
<dd id="Databricks.ALIAS_POST_TABLESAMPLE" class="variable"><a href="hive.html#Hive.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd> <dd id="Databricks.ALIAS_POST_TABLESAMPLE" class="variable"><a href="hive.html#Hive.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd>
<dd id="Databricks.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="hive.html#Hive.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd> <dd id="Databricks.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="hive.html#Hive.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd>
<dd id="Databricks.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="hive.html#Hive.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Databricks.RESOLVES_IDENTIFIERS_AS_UPPERCASE" class="variable"><a href="hive.html#Hive.RESOLVES_IDENTIFIERS_AS_UPPERCASE">RESOLVES_IDENTIFIERS_AS_UPPERCASE</a></dd> <dd id="Databricks.RESOLVES_IDENTIFIERS_AS_UPPERCASE" class="variable"><a href="hive.html#Hive.RESOLVES_IDENTIFIERS_AS_UPPERCASE">RESOLVES_IDENTIFIERS_AS_UPPERCASE</a></dd>
<dd id="Databricks.TIME_MAPPING" class="variable"><a href="hive.html#Hive.TIME_MAPPING">TIME_MAPPING</a></dd> <dd id="Databricks.TIME_MAPPING" class="variable"><a href="hive.html#Hive.TIME_MAPPING">TIME_MAPPING</a></dd>
<dd id="Databricks.DATE_FORMAT" class="variable"><a href="hive.html#Hive.DATE_FORMAT">DATE_FORMAT</a></dd> <dd id="Databricks.DATE_FORMAT" class="variable"><a href="hive.html#Hive.DATE_FORMAT">DATE_FORMAT</a></dd>
@ -800,6 +801,7 @@ Default: 3</li>
<dd id="Databricks.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd> <dd id="Databricks.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd>
<dd id="Databricks.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd> <dd id="Databricks.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd>
<dd id="Databricks.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd> <dd id="Databricks.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd>
<dd id="Databricks.Parser.FETCH_TOKENS" class="variable"><a href="../parser.html#Parser.FETCH_TOKENS">FETCH_TOKENS</a></dd>
<dd id="Databricks.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd> <dd id="Databricks.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd>
<dd id="Databricks.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd> <dd id="Databricks.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd>
<dd id="Databricks.Parser.CONCAT_NULL_OUTPUTS_STRING" class="variable"><a href="../parser.html#Parser.CONCAT_NULL_OUTPUTS_STRING">CONCAT_NULL_OUTPUTS_STRING</a></dd> <dd id="Databricks.Parser.CONCAT_NULL_OUTPUTS_STRING" class="variable"><a href="../parser.html#Parser.CONCAT_NULL_OUTPUTS_STRING">CONCAT_NULL_OUTPUTS_STRING</a></dd>
@ -834,10 +836,10 @@ Default: 3</li>
</div> </div>
<div><dt><a href="hive.html#Hive.Parser">sqlglot.dialects.hive.Hive.Parser</a></dt> <div><dt><a href="hive.html#Hive.Parser">sqlglot.dialects.hive.Hive.Parser</a></dt>
<dd id="Databricks.Parser.STRICT_CAST" class="variable"><a href="hive.html#Hive.Parser.STRICT_CAST">STRICT_CAST</a></dd> <dd id="Databricks.Parser.STRICT_CAST" class="variable"><a href="hive.html#Hive.Parser.STRICT_CAST">STRICT_CAST</a></dd>
<dd id="Databricks.Parser.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="hive.html#Hive.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Databricks.Parser.NO_PAREN_FUNCTION_PARSERS" class="variable"><a href="hive.html#Hive.Parser.NO_PAREN_FUNCTION_PARSERS">NO_PAREN_FUNCTION_PARSERS</a></dd> <dd id="Databricks.Parser.NO_PAREN_FUNCTION_PARSERS" class="variable"><a href="hive.html#Hive.Parser.NO_PAREN_FUNCTION_PARSERS">NO_PAREN_FUNCTION_PARSERS</a></dd>
<dd id="Databricks.Parser.PROPERTY_PARSERS" class="variable"><a href="hive.html#Hive.Parser.PROPERTY_PARSERS">PROPERTY_PARSERS</a></dd> <dd id="Databricks.Parser.PROPERTY_PARSERS" class="variable"><a href="hive.html#Hive.Parser.PROPERTY_PARSERS">PROPERTY_PARSERS</a></dd>
<dd id="Databricks.Parser.ALIAS_POST_TABLESAMPLE" class="variable"><a href="hive.html#Hive.Parser.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd> <dd id="Databricks.Parser.ALIAS_POST_TABLESAMPLE" class="variable"><a href="hive.html#Hive.Parser.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd>
<dd id="Databricks.Parser.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="hive.html#Hive.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Databricks.Parser.TIME_MAPPING" class="variable"><a href="hive.html#Hive.Parser.TIME_MAPPING">TIME_MAPPING</a></dd> <dd id="Databricks.Parser.TIME_MAPPING" class="variable"><a href="hive.html#Hive.Parser.TIME_MAPPING">TIME_MAPPING</a></dd>
</div> </div>
@ -1001,26 +1003,26 @@ Default: True</li>
</div> </div>
<a class="headerlink" href="#Databricks.Generator.can_identify"></a> <a class="headerlink" href="#Databricks.Generator.can_identify"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Databricks.Generator.can_identify-257"><a href="#Databricks.Generator.can_identify-257"><span class="linenos">257</span></a> <span class="nd">@classmethod</span> <div class="pdoc-code codehilite"><pre><span></span><span id="Databricks.Generator.can_identify-260"><a href="#Databricks.Generator.can_identify-260"><span class="linenos">260</span></a> <span class="nd">@classmethod</span>
</span><span id="Databricks.Generator.can_identify-258"><a href="#Databricks.Generator.can_identify-258"><span class="linenos">258</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="Databricks.Generator.can_identify-261"><a href="#Databricks.Generator.can_identify-261"><span class="linenos">261</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="Databricks.Generator.can_identify-259"><a href="#Databricks.Generator.can_identify-259"><span class="linenos">259</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="Databricks.Generator.can_identify-262"><a href="#Databricks.Generator.can_identify-262"><span class="linenos">262</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="Databricks.Generator.can_identify-260"><a href="#Databricks.Generator.can_identify-260"><span class="linenos">260</span></a> </span><span id="Databricks.Generator.can_identify-263"><a href="#Databricks.Generator.can_identify-263"><span class="linenos">263</span></a>
</span><span id="Databricks.Generator.can_identify-261"><a href="#Databricks.Generator.can_identify-261"><span class="linenos">261</span></a><span class="sd"> Args:</span> </span><span id="Databricks.Generator.can_identify-264"><a href="#Databricks.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> Args:</span>
</span><span id="Databricks.Generator.can_identify-262"><a href="#Databricks.Generator.can_identify-262"><span class="linenos">262</span></a><span class="sd"> text: The text to check.</span> </span><span id="Databricks.Generator.can_identify-265"><a href="#Databricks.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> text: The text to check.</span>
</span><span id="Databricks.Generator.can_identify-263"><a href="#Databricks.Generator.can_identify-263"><span class="linenos">263</span></a><span class="sd"> identify:</span> </span><span id="Databricks.Generator.can_identify-266"><a href="#Databricks.Generator.can_identify-266"><span class="linenos">266</span></a><span class="sd"> identify:</span>
</span><span id="Databricks.Generator.can_identify-264"><a href="#Databricks.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span> </span><span id="Databricks.Generator.can_identify-267"><a href="#Databricks.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span>
</span><span id="Databricks.Generator.can_identify-265"><a href="#Databricks.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span> </span><span id="Databricks.Generator.can_identify-268"><a href="#Databricks.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span>
</span><span id="Databricks.Generator.can_identify-266"><a href="#Databricks.Generator.can_identify-266"><span class="linenos">266</span></a> </span><span id="Databricks.Generator.can_identify-269"><a href="#Databricks.Generator.can_identify-269"><span class="linenos">269</span></a>
</span><span id="Databricks.Generator.can_identify-267"><a href="#Databricks.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> Returns:</span> </span><span id="Databricks.Generator.can_identify-270"><a href="#Databricks.Generator.can_identify-270"><span class="linenos">270</span></a><span class="sd"> Returns:</span>
</span><span id="Databricks.Generator.can_identify-268"><a href="#Databricks.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> Whether or not the given text can be identified.</span> </span><span id="Databricks.Generator.can_identify-271"><a href="#Databricks.Generator.can_identify-271"><span class="linenos">271</span></a><span class="sd"> Whether or not the given text can be identified.</span>
</span><span id="Databricks.Generator.can_identify-269"><a href="#Databricks.Generator.can_identify-269"><span class="linenos">269</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="Databricks.Generator.can_identify-272"><a href="#Databricks.Generator.can_identify-272"><span class="linenos">272</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Databricks.Generator.can_identify-270"><a href="#Databricks.Generator.can_identify-270"><span class="linenos">270</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="Databricks.Generator.can_identify-273"><a href="#Databricks.Generator.can_identify-273"><span class="linenos">273</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="Databricks.Generator.can_identify-271"><a href="#Databricks.Generator.can_identify-271"><span class="linenos">271</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="Databricks.Generator.can_identify-274"><a href="#Databricks.Generator.can_identify-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="kc">True</span>
</span><span id="Databricks.Generator.can_identify-272"><a href="#Databricks.Generator.can_identify-272"><span class="linenos">272</span></a>
</span><span id="Databricks.Generator.can_identify-273"><a href="#Databricks.Generator.can_identify-273"><span class="linenos">273</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="Databricks.Generator.can_identify-274"><a href="#Databricks.Generator.can_identify-274"><span class="linenos">274</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="Databricks.Generator.can_identify-275"><a href="#Databricks.Generator.can_identify-275"><span class="linenos">275</span></a> </span><span id="Databricks.Generator.can_identify-275"><a href="#Databricks.Generator.can_identify-275"><span class="linenos">275</span></a>
</span><span id="Databricks.Generator.can_identify-276"><a href="#Databricks.Generator.can_identify-276"><span class="linenos">276</span></a> <span class="k">return</span> <span class="kc">False</span> </span><span id="Databricks.Generator.can_identify-276"><a href="#Databricks.Generator.can_identify-276"><span class="linenos">276</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="Databricks.Generator.can_identify-277"><a href="#Databricks.Generator.can_identify-277"><span class="linenos">277</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="Databricks.Generator.can_identify-278"><a href="#Databricks.Generator.can_identify-278"><span class="linenos">278</span></a>
</span><span id="Databricks.Generator.can_identify-279"><a href="#Databricks.Generator.can_identify-279"><span class="linenos">279</span></a> <span class="k">return</span> <span class="kc">False</span>
</span></pre></div> </span></pre></div>

File diff suppressed because it is too large Load diff

View file

@ -595,6 +595,7 @@
<div><dt><a href="mysql.html#MySQL">sqlglot.dialects.mysql.MySQL</a></dt> <div><dt><a href="mysql.html#MySQL">sqlglot.dialects.mysql.MySQL</a></dt>
<dd id="Doris.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="mysql.html#MySQL.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd> <dd id="Doris.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="mysql.html#MySQL.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd>
<dd id="Doris.DPIPE_IS_STRING_CONCAT" class="variable"><a href="mysql.html#MySQL.DPIPE_IS_STRING_CONCAT">DPIPE_IS_STRING_CONCAT</a></dd> <dd id="Doris.DPIPE_IS_STRING_CONCAT" class="variable"><a href="mysql.html#MySQL.DPIPE_IS_STRING_CONCAT">DPIPE_IS_STRING_CONCAT</a></dd>
<dd id="Doris.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="mysql.html#MySQL.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Doris.TIME_MAPPING" class="variable"><a href="mysql.html#MySQL.TIME_MAPPING">TIME_MAPPING</a></dd> <dd id="Doris.TIME_MAPPING" class="variable"><a href="mysql.html#MySQL.TIME_MAPPING">TIME_MAPPING</a></dd>
<dd id="Doris.Tokenizer" class="class"><a href="mysql.html#MySQL.Tokenizer">Tokenizer</a></dd> <dd id="Doris.Tokenizer" class="class"><a href="mysql.html#MySQL.Tokenizer">Tokenizer</a></dd>
@ -795,6 +796,7 @@ Default: 3</li>
<dd id="Doris.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd> <dd id="Doris.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd>
<dd id="Doris.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd> <dd id="Doris.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd>
<dd id="Doris.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd> <dd id="Doris.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd>
<dd id="Doris.Parser.FETCH_TOKENS" class="variable"><a href="../parser.html#Parser.FETCH_TOKENS">FETCH_TOKENS</a></dd>
<dd id="Doris.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd> <dd id="Doris.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd>
<dd id="Doris.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd> <dd id="Doris.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd>
<dd id="Doris.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd> <dd id="Doris.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd>
@ -826,7 +828,6 @@ Default: 3</li>
</div> </div>
<div><dt><a href="mysql.html#MySQL.Parser">sqlglot.dialects.mysql.MySQL.Parser</a></dt> <div><dt><a href="mysql.html#MySQL.Parser">sqlglot.dialects.mysql.MySQL.Parser</a></dt>
<dd id="Doris.Parser.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="mysql.html#MySQL.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Doris.Parser.FUNC_TOKENS" class="variable"><a href="mysql.html#MySQL.Parser.FUNC_TOKENS">FUNC_TOKENS</a></dd> <dd id="Doris.Parser.FUNC_TOKENS" class="variable"><a href="mysql.html#MySQL.Parser.FUNC_TOKENS">FUNC_TOKENS</a></dd>
<dd id="Doris.Parser.CONJUNCTION" class="variable"><a href="mysql.html#MySQL.Parser.CONJUNCTION">CONJUNCTION</a></dd> <dd id="Doris.Parser.CONJUNCTION" class="variable"><a href="mysql.html#MySQL.Parser.CONJUNCTION">CONJUNCTION</a></dd>
<dd id="Doris.Parser.BITWISE" class="variable"><a href="mysql.html#MySQL.Parser.BITWISE">BITWISE</a></dd> <dd id="Doris.Parser.BITWISE" class="variable"><a href="mysql.html#MySQL.Parser.BITWISE">BITWISE</a></dd>
@ -842,6 +843,7 @@ Default: 3</li>
<dd id="Doris.Parser.TYPE_TOKENS" class="variable"><a href="mysql.html#MySQL.Parser.TYPE_TOKENS">TYPE_TOKENS</a></dd> <dd id="Doris.Parser.TYPE_TOKENS" class="variable"><a href="mysql.html#MySQL.Parser.TYPE_TOKENS">TYPE_TOKENS</a></dd>
<dd id="Doris.Parser.ENUM_TYPE_TOKENS" class="variable"><a href="mysql.html#MySQL.Parser.ENUM_TYPE_TOKENS">ENUM_TYPE_TOKENS</a></dd> <dd id="Doris.Parser.ENUM_TYPE_TOKENS" class="variable"><a href="mysql.html#MySQL.Parser.ENUM_TYPE_TOKENS">ENUM_TYPE_TOKENS</a></dd>
<dd id="Doris.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="mysql.html#MySQL.Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd> <dd id="Doris.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="mysql.html#MySQL.Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd>
<dd id="Doris.Parser.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="mysql.html#MySQL.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Doris.Parser.TIME_MAPPING" class="variable"><a href="mysql.html#MySQL.Parser.TIME_MAPPING">TIME_MAPPING</a></dd> <dd id="Doris.Parser.TIME_MAPPING" class="variable"><a href="mysql.html#MySQL.Parser.TIME_MAPPING">TIME_MAPPING</a></dd>
</div> </div>
@ -1042,26 +1044,26 @@ Default: True</li>
</div> </div>
<a class="headerlink" href="#Doris.Generator.can_identify"></a> <a class="headerlink" href="#Doris.Generator.can_identify"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Doris.Generator.can_identify-257"><a href="#Doris.Generator.can_identify-257"><span class="linenos">257</span></a> <span class="nd">@classmethod</span> <div class="pdoc-code codehilite"><pre><span></span><span id="Doris.Generator.can_identify-260"><a href="#Doris.Generator.can_identify-260"><span class="linenos">260</span></a> <span class="nd">@classmethod</span>
</span><span id="Doris.Generator.can_identify-258"><a href="#Doris.Generator.can_identify-258"><span class="linenos">258</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="Doris.Generator.can_identify-261"><a href="#Doris.Generator.can_identify-261"><span class="linenos">261</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="Doris.Generator.can_identify-259"><a href="#Doris.Generator.can_identify-259"><span class="linenos">259</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="Doris.Generator.can_identify-262"><a href="#Doris.Generator.can_identify-262"><span class="linenos">262</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="Doris.Generator.can_identify-260"><a href="#Doris.Generator.can_identify-260"><span class="linenos">260</span></a> </span><span id="Doris.Generator.can_identify-263"><a href="#Doris.Generator.can_identify-263"><span class="linenos">263</span></a>
</span><span id="Doris.Generator.can_identify-261"><a href="#Doris.Generator.can_identify-261"><span class="linenos">261</span></a><span class="sd"> Args:</span> </span><span id="Doris.Generator.can_identify-264"><a href="#Doris.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> Args:</span>
</span><span id="Doris.Generator.can_identify-262"><a href="#Doris.Generator.can_identify-262"><span class="linenos">262</span></a><span class="sd"> text: The text to check.</span> </span><span id="Doris.Generator.can_identify-265"><a href="#Doris.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> text: The text to check.</span>
</span><span id="Doris.Generator.can_identify-263"><a href="#Doris.Generator.can_identify-263"><span class="linenos">263</span></a><span class="sd"> identify:</span> </span><span id="Doris.Generator.can_identify-266"><a href="#Doris.Generator.can_identify-266"><span class="linenos">266</span></a><span class="sd"> identify:</span>
</span><span id="Doris.Generator.can_identify-264"><a href="#Doris.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span> </span><span id="Doris.Generator.can_identify-267"><a href="#Doris.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span>
</span><span id="Doris.Generator.can_identify-265"><a href="#Doris.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span> </span><span id="Doris.Generator.can_identify-268"><a href="#Doris.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span>
</span><span id="Doris.Generator.can_identify-266"><a href="#Doris.Generator.can_identify-266"><span class="linenos">266</span></a> </span><span id="Doris.Generator.can_identify-269"><a href="#Doris.Generator.can_identify-269"><span class="linenos">269</span></a>
</span><span id="Doris.Generator.can_identify-267"><a href="#Doris.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> Returns:</span> </span><span id="Doris.Generator.can_identify-270"><a href="#Doris.Generator.can_identify-270"><span class="linenos">270</span></a><span class="sd"> Returns:</span>
</span><span id="Doris.Generator.can_identify-268"><a href="#Doris.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> Whether or not the given text can be identified.</span> </span><span id="Doris.Generator.can_identify-271"><a href="#Doris.Generator.can_identify-271"><span class="linenos">271</span></a><span class="sd"> Whether or not the given text can be identified.</span>
</span><span id="Doris.Generator.can_identify-269"><a href="#Doris.Generator.can_identify-269"><span class="linenos">269</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="Doris.Generator.can_identify-272"><a href="#Doris.Generator.can_identify-272"><span class="linenos">272</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Doris.Generator.can_identify-270"><a href="#Doris.Generator.can_identify-270"><span class="linenos">270</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="Doris.Generator.can_identify-273"><a href="#Doris.Generator.can_identify-273"><span class="linenos">273</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="Doris.Generator.can_identify-271"><a href="#Doris.Generator.can_identify-271"><span class="linenos">271</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="Doris.Generator.can_identify-274"><a href="#Doris.Generator.can_identify-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="kc">True</span>
</span><span id="Doris.Generator.can_identify-272"><a href="#Doris.Generator.can_identify-272"><span class="linenos">272</span></a>
</span><span id="Doris.Generator.can_identify-273"><a href="#Doris.Generator.can_identify-273"><span class="linenos">273</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="Doris.Generator.can_identify-274"><a href="#Doris.Generator.can_identify-274"><span class="linenos">274</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="Doris.Generator.can_identify-275"><a href="#Doris.Generator.can_identify-275"><span class="linenos">275</span></a> </span><span id="Doris.Generator.can_identify-275"><a href="#Doris.Generator.can_identify-275"><span class="linenos">275</span></a>
</span><span id="Doris.Generator.can_identify-276"><a href="#Doris.Generator.can_identify-276"><span class="linenos">276</span></a> <span class="k">return</span> <span class="kc">False</span> </span><span id="Doris.Generator.can_identify-276"><a href="#Doris.Generator.can_identify-276"><span class="linenos">276</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="Doris.Generator.can_identify-277"><a href="#Doris.Generator.can_identify-277"><span class="linenos">277</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="Doris.Generator.can_identify-278"><a href="#Doris.Generator.can_identify-278"><span class="linenos">278</span></a>
</span><span id="Doris.Generator.can_identify-279"><a href="#Doris.Generator.can_identify-279"><span class="linenos">279</span></a> <span class="k">return</span> <span class="kc">False</span>
</span></pre></div> </span></pre></div>

View file

@ -48,6 +48,9 @@
<li> <li>
<a class="variable" href="#Drill.TIME_FORMAT">TIME_FORMAT</a> <a class="variable" href="#Drill.TIME_FORMAT">TIME_FORMAT</a>
</li> </li>
<li>
<a class="variable" href="#Drill.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a>
</li>
<li> <li>
<a class="variable" href="#Drill.TIME_MAPPING">TIME_MAPPING</a> <a class="variable" href="#Drill.TIME_MAPPING">TIME_MAPPING</a>
</li> </li>
@ -75,9 +78,6 @@
<li> <li>
<a class="variable" href="#Drill.Parser.CONCAT_NULL_OUTPUTS_STRING">CONCAT_NULL_OUTPUTS_STRING</a> <a class="variable" href="#Drill.Parser.CONCAT_NULL_OUTPUTS_STRING">CONCAT_NULL_OUTPUTS_STRING</a>
</li> </li>
<li>
<a class="variable" href="#Drill.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a>
</li>
<li> <li>
<a class="variable" href="#Drill.Parser.FUNCTIONS">FUNCTIONS</a> <a class="variable" href="#Drill.Parser.FUNCTIONS">FUNCTIONS</a>
</li> </li>
@ -87,6 +87,9 @@
<li> <li>
<a class="variable" href="#Drill.Parser.TOKENIZER_CLASS">TOKENIZER_CLASS</a> <a class="variable" href="#Drill.Parser.TOKENIZER_CLASS">TOKENIZER_CLASS</a>
</li> </li>
<li>
<a class="variable" href="#Drill.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a>
</li>
<li> <li>
<a class="variable" href="#Drill.Parser.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a> <a class="variable" href="#Drill.Parser.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a>
</li> </li>
@ -310,48 +313,48 @@
</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a> <span class="n">DATE_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyy-MM-dd&#39;&quot;</span> </span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a> <span class="n">DATE_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyy-MM-dd&#39;&quot;</span>
</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a> <span class="n">DATEINT_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyyMMdd&#39;&quot;</span> </span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a> <span class="n">DATEINT_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyyMMdd&#39;&quot;</span>
</span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyy-MM-dd HH:mm:ss&#39;&quot;</span> </span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyy-MM-dd HH:mm:ss&#39;&quot;</span>
</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a> </span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</span></a>
</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> <span class="s2">&quot;y&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span> </span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a> <span class="s2">&quot;Y&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span> </span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a> <span class="s2">&quot;y&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span>
</span><span id="L-46"><a href="#L-46"><span class="linenos"> 46</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><span id="L-46"><a href="#L-46"><span class="linenos"> 46</span></a> <span class="s2">&quot;Y&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span>
</span><span id="L-47"><a href="#L-47"><span class="linenos"> 47</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><span id="L-47"><a href="#L-47"><span class="linenos"> 47</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><span id="L-48"><a href="#L-48"><span class="linenos"> 48</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><span id="L-48"><a href="#L-48"><span class="linenos"> 48</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><span id="L-49"><a href="#L-49"><span class="linenos"> 49</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><span id="L-49"><a href="#L-49"><span class="linenos"> 49</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><span id="L-50"><a href="#L-50"><span class="linenos"> 50</span></a> <span class="s2">&quot;MMMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&quot;</span><span class="p">,</span> </span><span id="L-50"><a href="#L-50"><span class="linenos"> 50</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><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="s2">&quot;MMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span> </span><span id="L-51"><a href="#L-51"><span class="linenos"> 51</span></a> <span class="s2">&quot;MMMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&quot;</span><span class="p">,</span>
</span><span id="L-52"><a href="#L-52"><span class="linenos"> 52</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><span id="L-52"><a href="#L-52"><span class="linenos"> 52</span></a> <span class="s2">&quot;MMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span>
</span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</span></a> <span class="s2">&quot;M&quot;</span><span class="p">:</span> <span class="s2">&quot;%-m&quot;</span><span class="p">,</span> </span><span id="L-53"><a href="#L-53"><span class="linenos"> 53</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><span id="L-54"><a href="#L-54"><span class="linenos"> 54</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><span id="L-54"><a href="#L-54"><span class="linenos"> 54</span></a> <span class="s2">&quot;M&quot;</span><span class="p">:</span> <span class="s2">&quot;%-m&quot;</span><span class="p">,</span>
</span><span id="L-55"><a href="#L-55"><span class="linenos"> 55</span></a> <span class="s2">&quot;d&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><span id="L-55"><a href="#L-55"><span class="linenos"> 55</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><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a> <span class="s2">&quot;HH&quot;</span><span class="p">:</span> <span class="s2">&quot;%H&quot;</span><span class="p">,</span> </span><span id="L-56"><a href="#L-56"><span class="linenos"> 56</span></a> <span class="s2">&quot;d&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><span id="L-57"><a href="#L-57"><span class="linenos"> 57</span></a> <span class="s2">&quot;H&quot;</span><span class="p">:</span> <span class="s2">&quot;%-H&quot;</span><span class="p">,</span> </span><span id="L-57"><a href="#L-57"><span class="linenos"> 57</span></a> <span class="s2">&quot;HH&quot;</span><span class="p">:</span> <span class="s2">&quot;%H&quot;</span><span class="p">,</span>
</span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a> <span class="s2">&quot;hh&quot;</span><span class="p">:</span> <span class="s2">&quot;%I&quot;</span><span class="p">,</span> </span><span id="L-58"><a href="#L-58"><span class="linenos"> 58</span></a> <span class="s2">&quot;H&quot;</span><span class="p">:</span> <span class="s2">&quot;%-H&quot;</span><span class="p">,</span>
</span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> <span class="s2">&quot;h&quot;</span><span class="p">:</span> <span class="s2">&quot;%-I&quot;</span><span class="p">,</span> </span><span id="L-59"><a href="#L-59"><span class="linenos"> 59</span></a> <span class="s2">&quot;hh&quot;</span><span class="p">:</span> <span class="s2">&quot;%I&quot;</span><span class="p">,</span>
</span><span id="L-60"><a href="#L-60"><span class="linenos"> 60</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><span id="L-60"><a href="#L-60"><span class="linenos"> 60</span></a> <span class="s2">&quot;h&quot;</span><span class="p">:</span> <span class="s2">&quot;%-I&quot;</span><span class="p">,</span>
</span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</span></a> <span class="s2">&quot;m&quot;</span><span class="p">:</span> <span class="s2">&quot;%-M&quot;</span><span class="p">,</span> </span><span id="L-61"><a href="#L-61"><span class="linenos"> 61</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><span id="L-62"><a href="#L-62"><span class="linenos"> 62</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><span id="L-62"><a href="#L-62"><span class="linenos"> 62</span></a> <span class="s2">&quot;m&quot;</span><span class="p">:</span> <span class="s2">&quot;%-M&quot;</span><span class="p">,</span>
</span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</span></a> <span class="s2">&quot;s&quot;</span><span class="p">:</span> <span class="s2">&quot;%-S&quot;</span><span class="p">,</span> </span><span id="L-63"><a href="#L-63"><span class="linenos"> 63</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><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a> <span class="s2">&quot;SSSSSS&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><span id="L-64"><a href="#L-64"><span class="linenos"> 64</span></a> <span class="s2">&quot;s&quot;</span><span class="p">:</span> <span class="s2">&quot;%-S&quot;</span><span class="p">,</span>
</span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="s2">&quot;a&quot;</span><span class="p">:</span> <span class="s2">&quot;%p&quot;</span><span class="p">,</span> </span><span id="L-65"><a href="#L-65"><span class="linenos"> 65</span></a> <span class="s2">&quot;SSSSSS&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><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a> <span class="s2">&quot;DD&quot;</span><span class="p">:</span> <span class="s2">&quot;%j&quot;</span><span class="p">,</span> </span><span id="L-66"><a href="#L-66"><span class="linenos"> 66</span></a> <span class="s2">&quot;a&quot;</span><span class="p">:</span> <span class="s2">&quot;%p&quot;</span><span class="p">,</span>
</span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a> <span class="s2">&quot;D&quot;</span><span class="p">:</span> <span class="s2">&quot;%-j&quot;</span><span class="p">,</span> </span><span id="L-67"><a href="#L-67"><span class="linenos"> 67</span></a> <span class="s2">&quot;DD&quot;</span><span class="p">:</span> <span class="s2">&quot;%j&quot;</span><span class="p">,</span>
</span><span id="L-68"><a href="#L-68"><span class="linenos"> 68</span></a> <span class="s2">&quot;E&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-68"><a href="#L-68"><span class="linenos"> 68</span></a> <span class="s2">&quot;D&quot;</span><span class="p">:</span> <span class="s2">&quot;%-j&quot;</span><span class="p">,</span>
</span><span id="L-69"><a href="#L-69"><span class="linenos"> 69</span></a> <span class="s2">&quot;EE&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-69"><a href="#L-69"><span class="linenos"> 69</span></a> <span class="s2">&quot;E&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-70"><a href="#L-70"><span class="linenos"> 70</span></a> <span class="s2">&quot;EEE&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-70"><a href="#L-70"><span class="linenos"> 70</span></a> <span class="s2">&quot;EE&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-71"><a href="#L-71"><span class="linenos"> 71</span></a> <span class="s2">&quot;EEEE&quot;</span><span class="p">:</span> <span class="s2">&quot;%A&quot;</span><span class="p">,</span> </span><span id="L-71"><a href="#L-71"><span class="linenos"> 71</span></a> <span class="s2">&quot;EEE&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-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="s2">&quot;&#39;&#39;T&#39;&#39;&quot;</span><span class="p">:</span> <span class="s2">&quot;T&quot;</span><span class="p">,</span> </span><span id="L-72"><a href="#L-72"><span class="linenos"> 72</span></a> <span class="s2">&quot;EEEE&quot;</span><span class="p">:</span> <span class="s2">&quot;%A&quot;</span><span class="p">,</span>
</span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="p">}</span> </span><span id="L-73"><a href="#L-73"><span class="linenos"> 73</span></a> <span class="s2">&quot;&#39;&#39;T&#39;&#39;&quot;</span><span class="p">:</span> <span class="s2">&quot;T&quot;</span><span class="p">,</span>
</span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> </span><span id="L-74"><a href="#L-74"><span class="linenos"> 74</span></a> <span class="p">}</span>
</span><span id="L-75"><a href="#L-75"><span class="linenos"> 75</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-75"><a href="#L-75"><span class="linenos"> 75</span></a>
</span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;`&quot;</span><span class="p">]</span> </span><span id="L-76"><a href="#L-76"><span class="linenos"> 76</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-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">]</span> </span><span id="L-77"><a href="#L-77"><span class="linenos"> 77</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;`&quot;</span><span class="p">]</span>
</span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="n">ENCODE</span> <span class="o">=</span> <span class="s2">&quot;utf-8&quot;</span> </span><span id="L-78"><a href="#L-78"><span class="linenos"> 78</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">]</span>
</span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> </span><span id="L-79"><a href="#L-79"><span class="linenos"> 79</span></a> <span class="n">ENCODE</span> <span class="o">=</span> <span class="s2">&quot;utf-8&quot;</span>
</span><span id="L-80"><a href="#L-80"><span class="linenos"> 80</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-80"><a href="#L-80"><span class="linenos"> 80</span></a>
</span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="L-81"><a href="#L-81"><span class="linenos"> 81</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-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="n">CONCAT_NULL_OUTPUTS_STRING</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-82"><a href="#L-82"><span class="linenos"> 82</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="L-83"><a href="#L-83"><span class="linenos"> 83</span></a> <span class="n">CONCAT_NULL_OUTPUTS_STRING</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a> </span><span id="L-84"><a href="#L-84"><span class="linenos"> 84</span></a>
</span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-85"><a href="#L-85"><span class="linenos"> 85</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-86"><a href="#L-86"><span class="linenos"> 86</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-86"><a href="#L-86"><span class="linenos"> 86</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>
@ -443,48 +446,48 @@
</span><span id="Drill-40"><a href="#Drill-40"><span class="linenos"> 40</span></a> <span class="n">DATE_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyy-MM-dd&#39;&quot;</span> </span><span id="Drill-40"><a href="#Drill-40"><span class="linenos"> 40</span></a> <span class="n">DATE_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyy-MM-dd&#39;&quot;</span>
</span><span id="Drill-41"><a href="#Drill-41"><span class="linenos"> 41</span></a> <span class="n">DATEINT_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyyMMdd&#39;&quot;</span> </span><span id="Drill-41"><a href="#Drill-41"><span class="linenos"> 41</span></a> <span class="n">DATEINT_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyyMMdd&#39;&quot;</span>
</span><span id="Drill-42"><a href="#Drill-42"><span class="linenos"> 42</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyy-MM-dd HH:mm:ss&#39;&quot;</span> </span><span id="Drill-42"><a href="#Drill-42"><span class="linenos"> 42</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyy-MM-dd HH:mm:ss&#39;&quot;</span>
</span><span id="Drill-43"><a href="#Drill-43"><span class="linenos"> 43</span></a> </span><span id="Drill-43"><a href="#Drill-43"><span class="linenos"> 43</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Drill-44"><a href="#Drill-44"><span class="linenos"> 44</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Drill-44"><a href="#Drill-44"><span class="linenos"> 44</span></a>
</span><span id="Drill-45"><a href="#Drill-45"><span class="linenos"> 45</span></a> <span class="s2">&quot;y&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span> </span><span id="Drill-45"><a href="#Drill-45"><span class="linenos"> 45</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Drill-46"><a href="#Drill-46"><span class="linenos"> 46</span></a> <span class="s2">&quot;Y&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span> </span><span id="Drill-46"><a href="#Drill-46"><span class="linenos"> 46</span></a> <span class="s2">&quot;y&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span>
</span><span id="Drill-47"><a href="#Drill-47"><span class="linenos"> 47</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><span id="Drill-47"><a href="#Drill-47"><span class="linenos"> 47</span></a> <span class="s2">&quot;Y&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span>
</span><span id="Drill-48"><a href="#Drill-48"><span class="linenos"> 48</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><span id="Drill-48"><a href="#Drill-48"><span class="linenos"> 48</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><span id="Drill-49"><a href="#Drill-49"><span class="linenos"> 49</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><span id="Drill-49"><a href="#Drill-49"><span class="linenos"> 49</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><span id="Drill-50"><a href="#Drill-50"><span class="linenos"> 50</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><span id="Drill-50"><a href="#Drill-50"><span class="linenos"> 50</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><span id="Drill-51"><a href="#Drill-51"><span class="linenos"> 51</span></a> <span class="s2">&quot;MMMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&quot;</span><span class="p">,</span> </span><span id="Drill-51"><a href="#Drill-51"><span class="linenos"> 51</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><span id="Drill-52"><a href="#Drill-52"><span class="linenos"> 52</span></a> <span class="s2">&quot;MMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span> </span><span id="Drill-52"><a href="#Drill-52"><span class="linenos"> 52</span></a> <span class="s2">&quot;MMMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&quot;</span><span class="p">,</span>
</span><span id="Drill-53"><a href="#Drill-53"><span class="linenos"> 53</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><span id="Drill-53"><a href="#Drill-53"><span class="linenos"> 53</span></a> <span class="s2">&quot;MMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span>
</span><span id="Drill-54"><a href="#Drill-54"><span class="linenos"> 54</span></a> <span class="s2">&quot;M&quot;</span><span class="p">:</span> <span class="s2">&quot;%-m&quot;</span><span class="p">,</span> </span><span id="Drill-54"><a href="#Drill-54"><span class="linenos"> 54</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><span id="Drill-55"><a href="#Drill-55"><span class="linenos"> 55</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><span id="Drill-55"><a href="#Drill-55"><span class="linenos"> 55</span></a> <span class="s2">&quot;M&quot;</span><span class="p">:</span> <span class="s2">&quot;%-m&quot;</span><span class="p">,</span>
</span><span id="Drill-56"><a href="#Drill-56"><span class="linenos"> 56</span></a> <span class="s2">&quot;d&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><span id="Drill-56"><a href="#Drill-56"><span class="linenos"> 56</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><span id="Drill-57"><a href="#Drill-57"><span class="linenos"> 57</span></a> <span class="s2">&quot;HH&quot;</span><span class="p">:</span> <span class="s2">&quot;%H&quot;</span><span class="p">,</span> </span><span id="Drill-57"><a href="#Drill-57"><span class="linenos"> 57</span></a> <span class="s2">&quot;d&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><span id="Drill-58"><a href="#Drill-58"><span class="linenos"> 58</span></a> <span class="s2">&quot;H&quot;</span><span class="p">:</span> <span class="s2">&quot;%-H&quot;</span><span class="p">,</span> </span><span id="Drill-58"><a href="#Drill-58"><span class="linenos"> 58</span></a> <span class="s2">&quot;HH&quot;</span><span class="p">:</span> <span class="s2">&quot;%H&quot;</span><span class="p">,</span>
</span><span id="Drill-59"><a href="#Drill-59"><span class="linenos"> 59</span></a> <span class="s2">&quot;hh&quot;</span><span class="p">:</span> <span class="s2">&quot;%I&quot;</span><span class="p">,</span> </span><span id="Drill-59"><a href="#Drill-59"><span class="linenos"> 59</span></a> <span class="s2">&quot;H&quot;</span><span class="p">:</span> <span class="s2">&quot;%-H&quot;</span><span class="p">,</span>
</span><span id="Drill-60"><a href="#Drill-60"><span class="linenos"> 60</span></a> <span class="s2">&quot;h&quot;</span><span class="p">:</span> <span class="s2">&quot;%-I&quot;</span><span class="p">,</span> </span><span id="Drill-60"><a href="#Drill-60"><span class="linenos"> 60</span></a> <span class="s2">&quot;hh&quot;</span><span class="p">:</span> <span class="s2">&quot;%I&quot;</span><span class="p">,</span>
</span><span id="Drill-61"><a href="#Drill-61"><span class="linenos"> 61</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><span id="Drill-61"><a href="#Drill-61"><span class="linenos"> 61</span></a> <span class="s2">&quot;h&quot;</span><span class="p">:</span> <span class="s2">&quot;%-I&quot;</span><span class="p">,</span>
</span><span id="Drill-62"><a href="#Drill-62"><span class="linenos"> 62</span></a> <span class="s2">&quot;m&quot;</span><span class="p">:</span> <span class="s2">&quot;%-M&quot;</span><span class="p">,</span> </span><span id="Drill-62"><a href="#Drill-62"><span class="linenos"> 62</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><span id="Drill-63"><a href="#Drill-63"><span class="linenos"> 63</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><span id="Drill-63"><a href="#Drill-63"><span class="linenos"> 63</span></a> <span class="s2">&quot;m&quot;</span><span class="p">:</span> <span class="s2">&quot;%-M&quot;</span><span class="p">,</span>
</span><span id="Drill-64"><a href="#Drill-64"><span class="linenos"> 64</span></a> <span class="s2">&quot;s&quot;</span><span class="p">:</span> <span class="s2">&quot;%-S&quot;</span><span class="p">,</span> </span><span id="Drill-64"><a href="#Drill-64"><span class="linenos"> 64</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><span id="Drill-65"><a href="#Drill-65"><span class="linenos"> 65</span></a> <span class="s2">&quot;SSSSSS&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><span id="Drill-65"><a href="#Drill-65"><span class="linenos"> 65</span></a> <span class="s2">&quot;s&quot;</span><span class="p">:</span> <span class="s2">&quot;%-S&quot;</span><span class="p">,</span>
</span><span id="Drill-66"><a href="#Drill-66"><span class="linenos"> 66</span></a> <span class="s2">&quot;a&quot;</span><span class="p">:</span> <span class="s2">&quot;%p&quot;</span><span class="p">,</span> </span><span id="Drill-66"><a href="#Drill-66"><span class="linenos"> 66</span></a> <span class="s2">&quot;SSSSSS&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><span id="Drill-67"><a href="#Drill-67"><span class="linenos"> 67</span></a> <span class="s2">&quot;DD&quot;</span><span class="p">:</span> <span class="s2">&quot;%j&quot;</span><span class="p">,</span> </span><span id="Drill-67"><a href="#Drill-67"><span class="linenos"> 67</span></a> <span class="s2">&quot;a&quot;</span><span class="p">:</span> <span class="s2">&quot;%p&quot;</span><span class="p">,</span>
</span><span id="Drill-68"><a href="#Drill-68"><span class="linenos"> 68</span></a> <span class="s2">&quot;D&quot;</span><span class="p">:</span> <span class="s2">&quot;%-j&quot;</span><span class="p">,</span> </span><span id="Drill-68"><a href="#Drill-68"><span class="linenos"> 68</span></a> <span class="s2">&quot;DD&quot;</span><span class="p">:</span> <span class="s2">&quot;%j&quot;</span><span class="p">,</span>
</span><span id="Drill-69"><a href="#Drill-69"><span class="linenos"> 69</span></a> <span class="s2">&quot;E&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="Drill-69"><a href="#Drill-69"><span class="linenos"> 69</span></a> <span class="s2">&quot;D&quot;</span><span class="p">:</span> <span class="s2">&quot;%-j&quot;</span><span class="p">,</span>
</span><span id="Drill-70"><a href="#Drill-70"><span class="linenos"> 70</span></a> <span class="s2">&quot;EE&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="Drill-70"><a href="#Drill-70"><span class="linenos"> 70</span></a> <span class="s2">&quot;E&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="Drill-71"><a href="#Drill-71"><span class="linenos"> 71</span></a> <span class="s2">&quot;EEE&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="Drill-71"><a href="#Drill-71"><span class="linenos"> 71</span></a> <span class="s2">&quot;EE&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="Drill-72"><a href="#Drill-72"><span class="linenos"> 72</span></a> <span class="s2">&quot;EEEE&quot;</span><span class="p">:</span> <span class="s2">&quot;%A&quot;</span><span class="p">,</span> </span><span id="Drill-72"><a href="#Drill-72"><span class="linenos"> 72</span></a> <span class="s2">&quot;EEE&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="Drill-73"><a href="#Drill-73"><span class="linenos"> 73</span></a> <span class="s2">&quot;&#39;&#39;T&#39;&#39;&quot;</span><span class="p">:</span> <span class="s2">&quot;T&quot;</span><span class="p">,</span> </span><span id="Drill-73"><a href="#Drill-73"><span class="linenos"> 73</span></a> <span class="s2">&quot;EEEE&quot;</span><span class="p">:</span> <span class="s2">&quot;%A&quot;</span><span class="p">,</span>
</span><span id="Drill-74"><a href="#Drill-74"><span class="linenos"> 74</span></a> <span class="p">}</span> </span><span id="Drill-74"><a href="#Drill-74"><span class="linenos"> 74</span></a> <span class="s2">&quot;&#39;&#39;T&#39;&#39;&quot;</span><span class="p">:</span> <span class="s2">&quot;T&quot;</span><span class="p">,</span>
</span><span id="Drill-75"><a href="#Drill-75"><span class="linenos"> 75</span></a> </span><span id="Drill-75"><a href="#Drill-75"><span class="linenos"> 75</span></a> <span class="p">}</span>
</span><span id="Drill-76"><a href="#Drill-76"><span class="linenos"> 76</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="Drill-76"><a href="#Drill-76"><span class="linenos"> 76</span></a>
</span><span id="Drill-77"><a href="#Drill-77"><span class="linenos"> 77</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;`&quot;</span><span class="p">]</span> </span><span id="Drill-77"><a href="#Drill-77"><span class="linenos"> 77</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="Drill-78"><a href="#Drill-78"><span class="linenos"> 78</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">]</span> </span><span id="Drill-78"><a href="#Drill-78"><span class="linenos"> 78</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;`&quot;</span><span class="p">]</span>
</span><span id="Drill-79"><a href="#Drill-79"><span class="linenos"> 79</span></a> <span class="n">ENCODE</span> <span class="o">=</span> <span class="s2">&quot;utf-8&quot;</span> </span><span id="Drill-79"><a href="#Drill-79"><span class="linenos"> 79</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">]</span>
</span><span id="Drill-80"><a href="#Drill-80"><span class="linenos"> 80</span></a> </span><span id="Drill-80"><a href="#Drill-80"><span class="linenos"> 80</span></a> <span class="n">ENCODE</span> <span class="o">=</span> <span class="s2">&quot;utf-8&quot;</span>
</span><span id="Drill-81"><a href="#Drill-81"><span class="linenos"> 81</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="Drill-81"><a href="#Drill-81"><span class="linenos"> 81</span></a>
</span><span id="Drill-82"><a href="#Drill-82"><span class="linenos"> 82</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="Drill-82"><a href="#Drill-82"><span class="linenos"> 82</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="Drill-83"><a href="#Drill-83"><span class="linenos"> 83</span></a> <span class="n">CONCAT_NULL_OUTPUTS_STRING</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="Drill-83"><a href="#Drill-83"><span class="linenos"> 83</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Drill-84"><a href="#Drill-84"><span class="linenos"> 84</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="Drill-84"><a href="#Drill-84"><span class="linenos"> 84</span></a> <span class="n">CONCAT_NULL_OUTPUTS_STRING</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Drill-85"><a href="#Drill-85"><span class="linenos"> 85</span></a> </span><span id="Drill-85"><a href="#Drill-85"><span class="linenos"> 85</span></a>
</span><span id="Drill-86"><a href="#Drill-86"><span class="linenos"> 86</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Drill-86"><a href="#Drill-86"><span class="linenos"> 86</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Drill-87"><a href="#Drill-87"><span class="linenos"> 87</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="Drill-87"><a href="#Drill-87"><span class="linenos"> 87</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>
@ -619,6 +622,18 @@
</div>
<div id="Drill.SUPPORTS_USER_DEFINED_TYPES" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_USER_DEFINED_TYPES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Drill.SUPPORTS_USER_DEFINED_TYPES"></a>
</div> </div>
<div id="Drill.TIME_MAPPING" class="classattr"> <div id="Drill.TIME_MAPPING" class="classattr">
<div class="attr variable"> <div class="attr variable">
@ -884,10 +899,10 @@
</div> </div>
<a class="headerlink" href="#Drill.Tokenizer"></a> <a class="headerlink" href="#Drill.Tokenizer"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Drill.Tokenizer-76"><a href="#Drill.Tokenizer-76"><span class="linenos">76</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> <div class="pdoc-code codehilite"><pre><span></span><span id="Drill.Tokenizer-77"><a href="#Drill.Tokenizer-77"><span class="linenos">77</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="Drill.Tokenizer-77"><a href="#Drill.Tokenizer-77"><span class="linenos">77</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;`&quot;</span><span class="p">]</span> </span><span id="Drill.Tokenizer-78"><a href="#Drill.Tokenizer-78"><span class="linenos">78</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;`&quot;</span><span class="p">]</span>
</span><span id="Drill.Tokenizer-78"><a href="#Drill.Tokenizer-78"><span class="linenos">78</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">]</span> </span><span id="Drill.Tokenizer-79"><a href="#Drill.Tokenizer-79"><span class="linenos">79</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">]</span>
</span><span id="Drill.Tokenizer-79"><a href="#Drill.Tokenizer-79"><span class="linenos">79</span></a> <span class="n">ENCODE</span> <span class="o">=</span> <span class="s2">&quot;utf-8&quot;</span> </span><span id="Drill.Tokenizer-80"><a href="#Drill.Tokenizer-80"><span class="linenos">80</span></a> <span class="n">ENCODE</span> <span class="o">=</span> <span class="s2">&quot;utf-8&quot;</span>
</span></pre></div> </span></pre></div>
@ -970,10 +985,9 @@
</div> </div>
<a class="headerlink" href="#Drill.Parser"></a> <a class="headerlink" href="#Drill.Parser"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Drill.Parser-81"><a href="#Drill.Parser-81"><span class="linenos">81</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> <div class="pdoc-code codehilite"><pre><span></span><span id="Drill.Parser-82"><a href="#Drill.Parser-82"><span class="linenos">82</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="Drill.Parser-82"><a href="#Drill.Parser-82"><span class="linenos">82</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="Drill.Parser-83"><a href="#Drill.Parser-83"><span class="linenos">83</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Drill.Parser-83"><a href="#Drill.Parser-83"><span class="linenos">83</span></a> <span class="n">CONCAT_NULL_OUTPUTS_STRING</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="Drill.Parser-84"><a href="#Drill.Parser-84"><span class="linenos">84</span></a> <span class="n">CONCAT_NULL_OUTPUTS_STRING</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Drill.Parser-84"><a href="#Drill.Parser-84"><span class="linenos">84</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Drill.Parser-85"><a href="#Drill.Parser-85"><span class="linenos">85</span></a> </span><span id="Drill.Parser-85"><a href="#Drill.Parser-85"><span class="linenos">85</span></a>
</span><span id="Drill.Parser-86"><a href="#Drill.Parser-86"><span class="linenos">86</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Drill.Parser-86"><a href="#Drill.Parser-86"><span class="linenos">86</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Drill.Parser-87"><a href="#Drill.Parser-87"><span class="linenos">87</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="Drill.Parser-87"><a href="#Drill.Parser-87"><span class="linenos">87</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>
@ -1026,18 +1040,6 @@ Default: 3</li>
</div>
<div id="Drill.Parser.SUPPORTS_USER_DEFINED_TYPES" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_USER_DEFINED_TYPES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Drill.Parser.SUPPORTS_USER_DEFINED_TYPES"></a>
</div> </div>
<div id="Drill.Parser.FUNCTIONS" class="classattr"> <div id="Drill.Parser.FUNCTIONS" class="classattr">
<div class="attr variable"> <div class="attr variable">
@ -1075,6 +1077,18 @@ Default: 3</li>
</div>
<div id="Drill.Parser.SUPPORTS_USER_DEFINED_TYPES" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_USER_DEFINED_TYPES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Drill.Parser.SUPPORTS_USER_DEFINED_TYPES"></a>
</div> </div>
<div id="Drill.Parser.NORMALIZE_FUNCTIONS" class="classattr"> <div id="Drill.Parser.NORMALIZE_FUNCTIONS" class="classattr">
<div class="attr variable"> <div class="attr variable">
@ -1229,6 +1243,7 @@ Default: 3</li>
<dd id="Drill.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd> <dd id="Drill.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd>
<dd id="Drill.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd> <dd id="Drill.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd>
<dd id="Drill.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd> <dd id="Drill.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd>
<dd id="Drill.Parser.FETCH_TOKENS" class="variable"><a href="../parser.html#Parser.FETCH_TOKENS">FETCH_TOKENS</a></dd>
<dd id="Drill.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd> <dd id="Drill.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd>
<dd id="Drill.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd> <dd id="Drill.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd>
<dd id="Drill.Parser.PREFIXED_PIVOT_COLUMNS" class="variable"><a href="../parser.html#Parser.PREFIXED_PIVOT_COLUMNS">PREFIXED_PIVOT_COLUMNS</a></dd> <dd id="Drill.Parser.PREFIXED_PIVOT_COLUMNS" class="variable"><a href="../parser.html#Parser.PREFIXED_PIVOT_COLUMNS">PREFIXED_PIVOT_COLUMNS</a></dd>
@ -1551,26 +1566,26 @@ Default: True</li>
</div> </div>
<a class="headerlink" href="#Drill.Generator.can_identify"></a> <a class="headerlink" href="#Drill.Generator.can_identify"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Drill.Generator.can_identify-257"><a href="#Drill.Generator.can_identify-257"><span class="linenos">257</span></a> <span class="nd">@classmethod</span> <div class="pdoc-code codehilite"><pre><span></span><span id="Drill.Generator.can_identify-260"><a href="#Drill.Generator.can_identify-260"><span class="linenos">260</span></a> <span class="nd">@classmethod</span>
</span><span id="Drill.Generator.can_identify-258"><a href="#Drill.Generator.can_identify-258"><span class="linenos">258</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="Drill.Generator.can_identify-261"><a href="#Drill.Generator.can_identify-261"><span class="linenos">261</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="Drill.Generator.can_identify-259"><a href="#Drill.Generator.can_identify-259"><span class="linenos">259</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="Drill.Generator.can_identify-262"><a href="#Drill.Generator.can_identify-262"><span class="linenos">262</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="Drill.Generator.can_identify-260"><a href="#Drill.Generator.can_identify-260"><span class="linenos">260</span></a> </span><span id="Drill.Generator.can_identify-263"><a href="#Drill.Generator.can_identify-263"><span class="linenos">263</span></a>
</span><span id="Drill.Generator.can_identify-261"><a href="#Drill.Generator.can_identify-261"><span class="linenos">261</span></a><span class="sd"> Args:</span> </span><span id="Drill.Generator.can_identify-264"><a href="#Drill.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> Args:</span>
</span><span id="Drill.Generator.can_identify-262"><a href="#Drill.Generator.can_identify-262"><span class="linenos">262</span></a><span class="sd"> text: The text to check.</span> </span><span id="Drill.Generator.can_identify-265"><a href="#Drill.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> text: The text to check.</span>
</span><span id="Drill.Generator.can_identify-263"><a href="#Drill.Generator.can_identify-263"><span class="linenos">263</span></a><span class="sd"> identify:</span> </span><span id="Drill.Generator.can_identify-266"><a href="#Drill.Generator.can_identify-266"><span class="linenos">266</span></a><span class="sd"> identify:</span>
</span><span id="Drill.Generator.can_identify-264"><a href="#Drill.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span> </span><span id="Drill.Generator.can_identify-267"><a href="#Drill.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span>
</span><span id="Drill.Generator.can_identify-265"><a href="#Drill.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span> </span><span id="Drill.Generator.can_identify-268"><a href="#Drill.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span>
</span><span id="Drill.Generator.can_identify-266"><a href="#Drill.Generator.can_identify-266"><span class="linenos">266</span></a> </span><span id="Drill.Generator.can_identify-269"><a href="#Drill.Generator.can_identify-269"><span class="linenos">269</span></a>
</span><span id="Drill.Generator.can_identify-267"><a href="#Drill.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> Returns:</span> </span><span id="Drill.Generator.can_identify-270"><a href="#Drill.Generator.can_identify-270"><span class="linenos">270</span></a><span class="sd"> Returns:</span>
</span><span id="Drill.Generator.can_identify-268"><a href="#Drill.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> Whether or not the given text can be identified.</span> </span><span id="Drill.Generator.can_identify-271"><a href="#Drill.Generator.can_identify-271"><span class="linenos">271</span></a><span class="sd"> Whether or not the given text can be identified.</span>
</span><span id="Drill.Generator.can_identify-269"><a href="#Drill.Generator.can_identify-269"><span class="linenos">269</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="Drill.Generator.can_identify-272"><a href="#Drill.Generator.can_identify-272"><span class="linenos">272</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Drill.Generator.can_identify-270"><a href="#Drill.Generator.can_identify-270"><span class="linenos">270</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="Drill.Generator.can_identify-273"><a href="#Drill.Generator.can_identify-273"><span class="linenos">273</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="Drill.Generator.can_identify-271"><a href="#Drill.Generator.can_identify-271"><span class="linenos">271</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="Drill.Generator.can_identify-274"><a href="#Drill.Generator.can_identify-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="kc">True</span>
</span><span id="Drill.Generator.can_identify-272"><a href="#Drill.Generator.can_identify-272"><span class="linenos">272</span></a>
</span><span id="Drill.Generator.can_identify-273"><a href="#Drill.Generator.can_identify-273"><span class="linenos">273</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="Drill.Generator.can_identify-274"><a href="#Drill.Generator.can_identify-274"><span class="linenos">274</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="Drill.Generator.can_identify-275"><a href="#Drill.Generator.can_identify-275"><span class="linenos">275</span></a> </span><span id="Drill.Generator.can_identify-275"><a href="#Drill.Generator.can_identify-275"><span class="linenos">275</span></a>
</span><span id="Drill.Generator.can_identify-276"><a href="#Drill.Generator.can_identify-276"><span class="linenos">276</span></a> <span class="k">return</span> <span class="kc">False</span> </span><span id="Drill.Generator.can_identify-276"><a href="#Drill.Generator.can_identify-276"><span class="linenos">276</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="Drill.Generator.can_identify-277"><a href="#Drill.Generator.can_identify-277"><span class="linenos">277</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="Drill.Generator.can_identify-278"><a href="#Drill.Generator.can_identify-278"><span class="linenos">278</span></a>
</span><span id="Drill.Generator.can_identify-279"><a href="#Drill.Generator.can_identify-279"><span class="linenos">279</span></a> <span class="k">return</span> <span class="kc">False</span>
</span></pre></div> </span></pre></div>

View file

@ -36,6 +36,9 @@
<li> <li>
<a class="variable" href="#DuckDB.NULL_ORDERING">NULL_ORDERING</a> <a class="variable" href="#DuckDB.NULL_ORDERING">NULL_ORDERING</a>
</li> </li>
<li>
<a class="variable" href="#DuckDB.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a>
</li>
<li> <li>
<a class="variable" href="#DuckDB.RESOLVES_IDENTIFIERS_AS_UPPERCASE">RESOLVES_IDENTIFIERS_AS_UPPERCASE</a> <a class="variable" href="#DuckDB.RESOLVES_IDENTIFIERS_AS_UPPERCASE">RESOLVES_IDENTIFIERS_AS_UPPERCASE</a>
</li> </li>
@ -54,9 +57,6 @@
<li> <li>
<a class="variable" href="#DuckDB.Parser.CONCAT_NULL_OUTPUTS_STRING">CONCAT_NULL_OUTPUTS_STRING</a> <a class="variable" href="#DuckDB.Parser.CONCAT_NULL_OUTPUTS_STRING">CONCAT_NULL_OUTPUTS_STRING</a>
</li> </li>
<li>
<a class="variable" href="#DuckDB.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a>
</li>
<li> <li>
<a class="variable" href="#DuckDB.Parser.BITWISE">BITWISE</a> <a class="variable" href="#DuckDB.Parser.BITWISE">BITWISE</a>
</li> </li>
@ -69,6 +69,9 @@
<li> <li>
<a class="variable" href="#DuckDB.Parser.TOKENIZER_CLASS">TOKENIZER_CLASS</a> <a class="variable" href="#DuckDB.Parser.TOKENIZER_CLASS">TOKENIZER_CLASS</a>
</li> </li>
<li>
<a class="variable" href="#DuckDB.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a>
</li>
<li> <li>
<a class="variable" href="#DuckDB.Parser.NULL_ORDERING">NULL_ORDERING</a> <a class="variable" href="#DuckDB.Parser.NULL_ORDERING">NULL_ORDERING</a>
</li> </li>
@ -367,37 +370,37 @@
</span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a> </span><span id="L-105"><a href="#L-105"><span class="linenos">105</span></a>
</span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a><span class="k">class</span> <span class="nc">DuckDB</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> </span><span id="L-106"><a href="#L-106"><span class="linenos">106</span></a><span class="k">class</span> <span class="nc">DuckDB</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span>
</span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">&quot;nulls_are_last&quot;</span> </span><span id="L-107"><a href="#L-107"><span class="linenos">107</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">&quot;nulls_are_last&quot;</span>
</span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a> </span><span id="L-108"><a href="#L-108"><span class="linenos">108</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a> <span class="c1"># https://duckdb.org/docs/sql/introduction.html#creating-a-new-table</span> </span><span id="L-109"><a href="#L-109"><span class="linenos">109</span></a>
</span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a> <span class="n">RESOLVES_IDENTIFIERS_AS_UPPERCASE</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="L-110"><a href="#L-110"><span class="linenos">110</span></a> <span class="c1"># https://duckdb.org/docs/sql/introduction.html#creating-a-new-table</span>
</span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a> </span><span id="L-111"><a href="#L-111"><span class="linenos">111</span></a> <span class="n">RESOLVES_IDENTIFIERS_AS_UPPERCASE</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="L-112"><a href="#L-112"><span class="linenos">112</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-112"><a href="#L-112"><span class="linenos">112</span></a>
</span><span id="L-113"><a href="#L-113"><span class="linenos">113</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-113"><a href="#L-113"><span class="linenos">113</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-114"><a href="#L-114"><span class="linenos">114</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-114"><a href="#L-114"><span class="linenos">114</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-115"><a href="#L-115"><span class="linenos">115</span></a> <span class="s2">&quot;:=&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> </span><span id="L-115"><a href="#L-115"><span class="linenos">115</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-116"><a href="#L-116"><span class="linenos">116</span></a> <span class="s2">&quot;//&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">,</span> </span><span id="L-116"><a href="#L-116"><span class="linenos">116</span></a> <span class="s2">&quot;:=&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span>
</span><span id="L-117"><a href="#L-117"><span class="linenos">117</span></a> <span class="s2">&quot;ATTACH&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-117"><a href="#L-117"><span class="linenos">117</span></a> <span class="s2">&quot;//&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">,</span>
</span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> <span class="s2">&quot;BINARY&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span> </span><span id="L-118"><a href="#L-118"><span class="linenos">118</span></a> <span class="s2">&quot;ATTACH&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-119"><a href="#L-119"><span class="linenos">119</span></a> <span class="s2">&quot;BITSTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT</span><span class="p">,</span> </span><span id="L-119"><a href="#L-119"><span class="linenos">119</span></a> <span class="s2">&quot;BINARY&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span>
</span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> <span class="s2">&quot;BPCHAR&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> </span><span id="L-120"><a href="#L-120"><span class="linenos">120</span></a> <span class="s2">&quot;BITSTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT</span><span class="p">,</span>
</span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="s2">&quot;CHAR&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> </span><span id="L-121"><a href="#L-121"><span class="linenos">121</span></a> <span class="s2">&quot;BPCHAR&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span>
</span><span id="L-122"><a href="#L-122"><span class="linenos">122</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">TEXT</span><span class="p">,</span> </span><span id="L-122"><a href="#L-122"><span class="linenos">122</span></a> <span class="s2">&quot;CHAR&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span>
</span><span id="L-123"><a href="#L-123"><span class="linenos">123</span></a> <span class="s2">&quot;EXCLUDE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> </span><span id="L-123"><a href="#L-123"><span class="linenos">123</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">TEXT</span><span class="p">,</span>
</span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="s2">&quot;HUGEINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT128</span><span class="p">,</span> </span><span id="L-124"><a href="#L-124"><span class="linenos">124</span></a> <span class="s2">&quot;EXCLUDE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span>
</span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> <span class="s2">&quot;INT1&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> </span><span id="L-125"><a href="#L-125"><span class="linenos">125</span></a> <span class="s2">&quot;HUGEINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT128</span><span class="p">,</span>
</span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a> <span class="s2">&quot;LOGICAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">,</span> </span><span id="L-126"><a href="#L-126"><span class="linenos">126</span></a> <span class="s2">&quot;INT1&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span>
</span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="s2">&quot;PIVOT_WIDER&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> </span><span id="L-127"><a href="#L-127"><span class="linenos">127</span></a> <span class="s2">&quot;LOGICAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">,</span>
</span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="s2">&quot;SIGNED&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> </span><span id="L-128"><a href="#L-128"><span class="linenos">128</span></a> <span class="s2">&quot;PIVOT_WIDER&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span>
</span><span id="L-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="s2">&quot;STRING&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-129"><a href="#L-129"><span class="linenos">129</span></a> <span class="s2">&quot;SIGNED&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span>
</span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="s2">&quot;UBIGINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">,</span> </span><span id="L-130"><a href="#L-130"><span class="linenos">130</span></a> <span class="s2">&quot;STRING&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-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="s2">&quot;UINTEGER&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT</span><span class="p">,</span> </span><span id="L-131"><a href="#L-131"><span class="linenos">131</span></a> <span class="s2">&quot;UBIGINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">,</span>
</span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a> <span class="s2">&quot;USMALLINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">,</span> </span><span id="L-132"><a href="#L-132"><span class="linenos">132</span></a> <span class="s2">&quot;UINTEGER&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT</span><span class="p">,</span>
</span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a> <span class="s2">&quot;UTINYINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">,</span> </span><span id="L-133"><a href="#L-133"><span class="linenos">133</span></a> <span class="s2">&quot;USMALLINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">,</span>
</span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a> <span class="p">}</span> </span><span id="L-134"><a href="#L-134"><span class="linenos">134</span></a> <span class="s2">&quot;UTINYINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">,</span>
</span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> </span><span id="L-135"><a href="#L-135"><span class="linenos">135</span></a> <span class="p">}</span>
</span><span id="L-136"><a href="#L-136"><span class="linenos">136</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-136"><a href="#L-136"><span class="linenos">136</span></a>
</span><span id="L-137"><a href="#L-137"><span class="linenos">137</span></a> <span class="n">CONCAT_NULL_OUTPUTS_STRING</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-137"><a href="#L-137"><span class="linenos">137</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-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="L-138"><a href="#L-138"><span class="linenos">138</span></a> <span class="n">CONCAT_NULL_OUTPUTS_STRING</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a> </span><span id="L-139"><a href="#L-139"><span class="linenos">139</span></a>
</span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-140"><a href="#L-140"><span class="linenos">140</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-141"><a href="#L-141"><span class="linenos">141</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-141"><a href="#L-141"><span class="linenos">141</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>
@ -613,37 +616,37 @@
<a class="headerlink" href="#DuckDB"></a> <a class="headerlink" href="#DuckDB"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB-107"><a href="#DuckDB-107"><span class="linenos">107</span></a><span class="k">class</span> <span class="nc">DuckDB</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB-107"><a href="#DuckDB-107"><span class="linenos">107</span></a><span class="k">class</span> <span class="nc">DuckDB</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span>
</span><span id="DuckDB-108"><a href="#DuckDB-108"><span class="linenos">108</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">&quot;nulls_are_last&quot;</span> </span><span id="DuckDB-108"><a href="#DuckDB-108"><span class="linenos">108</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">&quot;nulls_are_last&quot;</span>
</span><span id="DuckDB-109"><a href="#DuckDB-109"><span class="linenos">109</span></a> </span><span id="DuckDB-109"><a href="#DuckDB-109"><span class="linenos">109</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="DuckDB-110"><a href="#DuckDB-110"><span class="linenos">110</span></a> <span class="c1"># https://duckdb.org/docs/sql/introduction.html#creating-a-new-table</span> </span><span id="DuckDB-110"><a href="#DuckDB-110"><span class="linenos">110</span></a>
</span><span id="DuckDB-111"><a href="#DuckDB-111"><span class="linenos">111</span></a> <span class="n">RESOLVES_IDENTIFIERS_AS_UPPERCASE</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="DuckDB-111"><a href="#DuckDB-111"><span class="linenos">111</span></a> <span class="c1"># https://duckdb.org/docs/sql/introduction.html#creating-a-new-table</span>
</span><span id="DuckDB-112"><a href="#DuckDB-112"><span class="linenos">112</span></a> </span><span id="DuckDB-112"><a href="#DuckDB-112"><span class="linenos">112</span></a> <span class="n">RESOLVES_IDENTIFIERS_AS_UPPERCASE</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="DuckDB-113"><a href="#DuckDB-113"><span class="linenos">113</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="DuckDB-113"><a href="#DuckDB-113"><span class="linenos">113</span></a>
</span><span id="DuckDB-114"><a href="#DuckDB-114"><span class="linenos">114</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="DuckDB-114"><a href="#DuckDB-114"><span class="linenos">114</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="DuckDB-115"><a href="#DuckDB-115"><span class="linenos">115</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="DuckDB-115"><a href="#DuckDB-115"><span class="linenos">115</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="DuckDB-116"><a href="#DuckDB-116"><span class="linenos">116</span></a> <span class="s2">&quot;:=&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> </span><span id="DuckDB-116"><a href="#DuckDB-116"><span class="linenos">116</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="DuckDB-117"><a href="#DuckDB-117"><span class="linenos">117</span></a> <span class="s2">&quot;//&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">,</span> </span><span id="DuckDB-117"><a href="#DuckDB-117"><span class="linenos">117</span></a> <span class="s2">&quot;:=&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span>
</span><span id="DuckDB-118"><a href="#DuckDB-118"><span class="linenos">118</span></a> <span class="s2">&quot;ATTACH&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="DuckDB-118"><a href="#DuckDB-118"><span class="linenos">118</span></a> <span class="s2">&quot;//&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">,</span>
</span><span id="DuckDB-119"><a href="#DuckDB-119"><span class="linenos">119</span></a> <span class="s2">&quot;BINARY&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span> </span><span id="DuckDB-119"><a href="#DuckDB-119"><span class="linenos">119</span></a> <span class="s2">&quot;ATTACH&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="DuckDB-120"><a href="#DuckDB-120"><span class="linenos">120</span></a> <span class="s2">&quot;BITSTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT</span><span class="p">,</span> </span><span id="DuckDB-120"><a href="#DuckDB-120"><span class="linenos">120</span></a> <span class="s2">&quot;BINARY&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span>
</span><span id="DuckDB-121"><a href="#DuckDB-121"><span class="linenos">121</span></a> <span class="s2">&quot;BPCHAR&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> </span><span id="DuckDB-121"><a href="#DuckDB-121"><span class="linenos">121</span></a> <span class="s2">&quot;BITSTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT</span><span class="p">,</span>
</span><span id="DuckDB-122"><a href="#DuckDB-122"><span class="linenos">122</span></a> <span class="s2">&quot;CHAR&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> </span><span id="DuckDB-122"><a href="#DuckDB-122"><span class="linenos">122</span></a> <span class="s2">&quot;BPCHAR&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span>
</span><span id="DuckDB-123"><a href="#DuckDB-123"><span class="linenos">123</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">TEXT</span><span class="p">,</span> </span><span id="DuckDB-123"><a href="#DuckDB-123"><span class="linenos">123</span></a> <span class="s2">&quot;CHAR&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span>
</span><span id="DuckDB-124"><a href="#DuckDB-124"><span class="linenos">124</span></a> <span class="s2">&quot;EXCLUDE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> </span><span id="DuckDB-124"><a href="#DuckDB-124"><span class="linenos">124</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">TEXT</span><span class="p">,</span>
</span><span id="DuckDB-125"><a href="#DuckDB-125"><span class="linenos">125</span></a> <span class="s2">&quot;HUGEINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT128</span><span class="p">,</span> </span><span id="DuckDB-125"><a href="#DuckDB-125"><span class="linenos">125</span></a> <span class="s2">&quot;EXCLUDE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span>
</span><span id="DuckDB-126"><a href="#DuckDB-126"><span class="linenos">126</span></a> <span class="s2">&quot;INT1&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> </span><span id="DuckDB-126"><a href="#DuckDB-126"><span class="linenos">126</span></a> <span class="s2">&quot;HUGEINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT128</span><span class="p">,</span>
</span><span id="DuckDB-127"><a href="#DuckDB-127"><span class="linenos">127</span></a> <span class="s2">&quot;LOGICAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">,</span> </span><span id="DuckDB-127"><a href="#DuckDB-127"><span class="linenos">127</span></a> <span class="s2">&quot;INT1&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span>
</span><span id="DuckDB-128"><a href="#DuckDB-128"><span class="linenos">128</span></a> <span class="s2">&quot;PIVOT_WIDER&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> </span><span id="DuckDB-128"><a href="#DuckDB-128"><span class="linenos">128</span></a> <span class="s2">&quot;LOGICAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">,</span>
</span><span id="DuckDB-129"><a href="#DuckDB-129"><span class="linenos">129</span></a> <span class="s2">&quot;SIGNED&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> </span><span id="DuckDB-129"><a href="#DuckDB-129"><span class="linenos">129</span></a> <span class="s2">&quot;PIVOT_WIDER&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span>
</span><span id="DuckDB-130"><a href="#DuckDB-130"><span class="linenos">130</span></a> <span class="s2">&quot;STRING&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="DuckDB-130"><a href="#DuckDB-130"><span class="linenos">130</span></a> <span class="s2">&quot;SIGNED&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span>
</span><span id="DuckDB-131"><a href="#DuckDB-131"><span class="linenos">131</span></a> <span class="s2">&quot;UBIGINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">,</span> </span><span id="DuckDB-131"><a href="#DuckDB-131"><span class="linenos">131</span></a> <span class="s2">&quot;STRING&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="DuckDB-132"><a href="#DuckDB-132"><span class="linenos">132</span></a> <span class="s2">&quot;UINTEGER&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT</span><span class="p">,</span> </span><span id="DuckDB-132"><a href="#DuckDB-132"><span class="linenos">132</span></a> <span class="s2">&quot;UBIGINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">,</span>
</span><span id="DuckDB-133"><a href="#DuckDB-133"><span class="linenos">133</span></a> <span class="s2">&quot;USMALLINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">,</span> </span><span id="DuckDB-133"><a href="#DuckDB-133"><span class="linenos">133</span></a> <span class="s2">&quot;UINTEGER&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT</span><span class="p">,</span>
</span><span id="DuckDB-134"><a href="#DuckDB-134"><span class="linenos">134</span></a> <span class="s2">&quot;UTINYINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">,</span> </span><span id="DuckDB-134"><a href="#DuckDB-134"><span class="linenos">134</span></a> <span class="s2">&quot;USMALLINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">,</span>
</span><span id="DuckDB-135"><a href="#DuckDB-135"><span class="linenos">135</span></a> <span class="p">}</span> </span><span id="DuckDB-135"><a href="#DuckDB-135"><span class="linenos">135</span></a> <span class="s2">&quot;UTINYINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">,</span>
</span><span id="DuckDB-136"><a href="#DuckDB-136"><span class="linenos">136</span></a> </span><span id="DuckDB-136"><a href="#DuckDB-136"><span class="linenos">136</span></a> <span class="p">}</span>
</span><span id="DuckDB-137"><a href="#DuckDB-137"><span class="linenos">137</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="DuckDB-137"><a href="#DuckDB-137"><span class="linenos">137</span></a>
</span><span id="DuckDB-138"><a href="#DuckDB-138"><span class="linenos">138</span></a> <span class="n">CONCAT_NULL_OUTPUTS_STRING</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="DuckDB-138"><a href="#DuckDB-138"><span class="linenos">138</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="DuckDB-139"><a href="#DuckDB-139"><span class="linenos">139</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="DuckDB-139"><a href="#DuckDB-139"><span class="linenos">139</span></a> <span class="n">CONCAT_NULL_OUTPUTS_STRING</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="DuckDB-140"><a href="#DuckDB-140"><span class="linenos">140</span></a> </span><span id="DuckDB-140"><a href="#DuckDB-140"><span class="linenos">140</span></a>
</span><span id="DuckDB-141"><a href="#DuckDB-141"><span class="linenos">141</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span> </span><span id="DuckDB-141"><a href="#DuckDB-141"><span class="linenos">141</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="DuckDB-142"><a href="#DuckDB-142"><span class="linenos">142</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="DuckDB-142"><a href="#DuckDB-142"><span class="linenos">142</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>
@ -858,6 +861,18 @@
</div>
<div id="DuckDB.SUPPORTS_USER_DEFINED_TYPES" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_USER_DEFINED_TYPES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#DuckDB.SUPPORTS_USER_DEFINED_TYPES"></a>
</div> </div>
<div id="DuckDB.RESOLVES_IDENTIFIERS_AS_UPPERCASE" class="classattr"> <div id="DuckDB.RESOLVES_IDENTIFIERS_AS_UPPERCASE" class="classattr">
<div class="attr variable"> <div class="attr variable">
@ -1122,29 +1137,29 @@
</div> </div>
<a class="headerlink" href="#DuckDB.Tokenizer"></a> <a class="headerlink" href="#DuckDB.Tokenizer"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Tokenizer-113"><a href="#DuckDB.Tokenizer-113"><span class="linenos">113</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> <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Tokenizer-114"><a href="#DuckDB.Tokenizer-114"><span class="linenos">114</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="DuckDB.Tokenizer-114"><a href="#DuckDB.Tokenizer-114"><span class="linenos">114</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="DuckDB.Tokenizer-115"><a href="#DuckDB.Tokenizer-115"><span class="linenos">115</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="DuckDB.Tokenizer-115"><a href="#DuckDB.Tokenizer-115"><span class="linenos">115</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="DuckDB.Tokenizer-116"><a href="#DuckDB.Tokenizer-116"><span class="linenos">116</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="DuckDB.Tokenizer-116"><a href="#DuckDB.Tokenizer-116"><span class="linenos">116</span></a> <span class="s2">&quot;:=&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span> </span><span id="DuckDB.Tokenizer-117"><a href="#DuckDB.Tokenizer-117"><span class="linenos">117</span></a> <span class="s2">&quot;:=&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EQ</span><span class="p">,</span>
</span><span id="DuckDB.Tokenizer-117"><a href="#DuckDB.Tokenizer-117"><span class="linenos">117</span></a> <span class="s2">&quot;//&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">,</span> </span><span id="DuckDB.Tokenizer-118"><a href="#DuckDB.Tokenizer-118"><span class="linenos">118</span></a> <span class="s2">&quot;//&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">DIV</span><span class="p">,</span>
</span><span id="DuckDB.Tokenizer-118"><a href="#DuckDB.Tokenizer-118"><span class="linenos">118</span></a> <span class="s2">&quot;ATTACH&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="DuckDB.Tokenizer-119"><a href="#DuckDB.Tokenizer-119"><span class="linenos">119</span></a> <span class="s2">&quot;ATTACH&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="DuckDB.Tokenizer-119"><a href="#DuckDB.Tokenizer-119"><span class="linenos">119</span></a> <span class="s2">&quot;BINARY&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span> </span><span id="DuckDB.Tokenizer-120"><a href="#DuckDB.Tokenizer-120"><span class="linenos">120</span></a> <span class="s2">&quot;BINARY&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VARBINARY</span><span class="p">,</span>
</span><span id="DuckDB.Tokenizer-120"><a href="#DuckDB.Tokenizer-120"><span class="linenos">120</span></a> <span class="s2">&quot;BITSTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT</span><span class="p">,</span> </span><span id="DuckDB.Tokenizer-121"><a href="#DuckDB.Tokenizer-121"><span class="linenos">121</span></a> <span class="s2">&quot;BITSTRING&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BIT</span><span class="p">,</span>
</span><span id="DuckDB.Tokenizer-121"><a href="#DuckDB.Tokenizer-121"><span class="linenos">121</span></a> <span class="s2">&quot;BPCHAR&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> </span><span id="DuckDB.Tokenizer-122"><a href="#DuckDB.Tokenizer-122"><span class="linenos">122</span></a> <span class="s2">&quot;BPCHAR&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span>
</span><span id="DuckDB.Tokenizer-122"><a href="#DuckDB.Tokenizer-122"><span class="linenos">122</span></a> <span class="s2">&quot;CHAR&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span> </span><span id="DuckDB.Tokenizer-123"><a href="#DuckDB.Tokenizer-123"><span class="linenos">123</span></a> <span class="s2">&quot;CHAR&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TEXT</span><span class="p">,</span>
</span><span id="DuckDB.Tokenizer-123"><a href="#DuckDB.Tokenizer-123"><span class="linenos">123</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">TEXT</span><span class="p">,</span> </span><span id="DuckDB.Tokenizer-124"><a href="#DuckDB.Tokenizer-124"><span class="linenos">124</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">TEXT</span><span class="p">,</span>
</span><span id="DuckDB.Tokenizer-124"><a href="#DuckDB.Tokenizer-124"><span class="linenos">124</span></a> <span class="s2">&quot;EXCLUDE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span> </span><span id="DuckDB.Tokenizer-125"><a href="#DuckDB.Tokenizer-125"><span class="linenos">125</span></a> <span class="s2">&quot;EXCLUDE&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">EXCEPT</span><span class="p">,</span>
</span><span id="DuckDB.Tokenizer-125"><a href="#DuckDB.Tokenizer-125"><span class="linenos">125</span></a> <span class="s2">&quot;HUGEINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT128</span><span class="p">,</span> </span><span id="DuckDB.Tokenizer-126"><a href="#DuckDB.Tokenizer-126"><span class="linenos">126</span></a> <span class="s2">&quot;HUGEINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT128</span><span class="p">,</span>
</span><span id="DuckDB.Tokenizer-126"><a href="#DuckDB.Tokenizer-126"><span class="linenos">126</span></a> <span class="s2">&quot;INT1&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span> </span><span id="DuckDB.Tokenizer-127"><a href="#DuckDB.Tokenizer-127"><span class="linenos">127</span></a> <span class="s2">&quot;INT1&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TINYINT</span><span class="p">,</span>
</span><span id="DuckDB.Tokenizer-127"><a href="#DuckDB.Tokenizer-127"><span class="linenos">127</span></a> <span class="s2">&quot;LOGICAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">,</span> </span><span id="DuckDB.Tokenizer-128"><a href="#DuckDB.Tokenizer-128"><span class="linenos">128</span></a> <span class="s2">&quot;LOGICAL&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">BOOLEAN</span><span class="p">,</span>
</span><span id="DuckDB.Tokenizer-128"><a href="#DuckDB.Tokenizer-128"><span class="linenos">128</span></a> <span class="s2">&quot;PIVOT_WIDER&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span> </span><span id="DuckDB.Tokenizer-129"><a href="#DuckDB.Tokenizer-129"><span class="linenos">129</span></a> <span class="s2">&quot;PIVOT_WIDER&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">PIVOT</span><span class="p">,</span>
</span><span id="DuckDB.Tokenizer-129"><a href="#DuckDB.Tokenizer-129"><span class="linenos">129</span></a> <span class="s2">&quot;SIGNED&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span> </span><span id="DuckDB.Tokenizer-130"><a href="#DuckDB.Tokenizer-130"><span class="linenos">130</span></a> <span class="s2">&quot;SIGNED&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">INT</span><span class="p">,</span>
</span><span id="DuckDB.Tokenizer-130"><a href="#DuckDB.Tokenizer-130"><span class="linenos">130</span></a> <span class="s2">&quot;STRING&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="DuckDB.Tokenizer-131"><a href="#DuckDB.Tokenizer-131"><span class="linenos">131</span></a> <span class="s2">&quot;STRING&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="DuckDB.Tokenizer-131"><a href="#DuckDB.Tokenizer-131"><span class="linenos">131</span></a> <span class="s2">&quot;UBIGINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">,</span> </span><span id="DuckDB.Tokenizer-132"><a href="#DuckDB.Tokenizer-132"><span class="linenos">132</span></a> <span class="s2">&quot;UBIGINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UBIGINT</span><span class="p">,</span>
</span><span id="DuckDB.Tokenizer-132"><a href="#DuckDB.Tokenizer-132"><span class="linenos">132</span></a> <span class="s2">&quot;UINTEGER&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT</span><span class="p">,</span> </span><span id="DuckDB.Tokenizer-133"><a href="#DuckDB.Tokenizer-133"><span class="linenos">133</span></a> <span class="s2">&quot;UINTEGER&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UINT</span><span class="p">,</span>
</span><span id="DuckDB.Tokenizer-133"><a href="#DuckDB.Tokenizer-133"><span class="linenos">133</span></a> <span class="s2">&quot;USMALLINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">,</span> </span><span id="DuckDB.Tokenizer-134"><a href="#DuckDB.Tokenizer-134"><span class="linenos">134</span></a> <span class="s2">&quot;USMALLINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">USMALLINT</span><span class="p">,</span>
</span><span id="DuckDB.Tokenizer-134"><a href="#DuckDB.Tokenizer-134"><span class="linenos">134</span></a> <span class="s2">&quot;UTINYINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">,</span> </span><span id="DuckDB.Tokenizer-135"><a href="#DuckDB.Tokenizer-135"><span class="linenos">135</span></a> <span class="s2">&quot;UTINYINT&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">UTINYINT</span><span class="p">,</span>
</span><span id="DuckDB.Tokenizer-135"><a href="#DuckDB.Tokenizer-135"><span class="linenos">135</span></a> <span class="p">}</span> </span><span id="DuckDB.Tokenizer-136"><a href="#DuckDB.Tokenizer-136"><span class="linenos">136</span></a> <span class="p">}</span>
</span></pre></div> </span></pre></div>
@ -1206,9 +1221,8 @@
</div> </div>
<a class="headerlink" href="#DuckDB.Parser"></a> <a class="headerlink" href="#DuckDB.Parser"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Parser-137"><a href="#DuckDB.Parser-137"><span class="linenos">137</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> <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Parser-138"><a href="#DuckDB.Parser-138"><span class="linenos">138</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="DuckDB.Parser-138"><a href="#DuckDB.Parser-138"><span class="linenos">138</span></a> <span class="n">CONCAT_NULL_OUTPUTS_STRING</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="DuckDB.Parser-139"><a href="#DuckDB.Parser-139"><span class="linenos">139</span></a> <span class="n">CONCAT_NULL_OUTPUTS_STRING</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="DuckDB.Parser-139"><a href="#DuckDB.Parser-139"><span class="linenos">139</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="DuckDB.Parser-140"><a href="#DuckDB.Parser-140"><span class="linenos">140</span></a> </span><span id="DuckDB.Parser-140"><a href="#DuckDB.Parser-140"><span class="linenos">140</span></a>
</span><span id="DuckDB.Parser-141"><a href="#DuckDB.Parser-141"><span class="linenos">141</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span> </span><span id="DuckDB.Parser-141"><a href="#DuckDB.Parser-141"><span class="linenos">141</span></a> <span class="n">BITWISE</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="DuckDB.Parser-142"><a href="#DuckDB.Parser-142"><span class="linenos">142</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="DuckDB.Parser-142"><a href="#DuckDB.Parser-142"><span class="linenos">142</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>
@ -1314,18 +1328,6 @@ Default: 3</li>
</div>
<div id="DuckDB.Parser.SUPPORTS_USER_DEFINED_TYPES" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_USER_DEFINED_TYPES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#DuckDB.Parser.SUPPORTS_USER_DEFINED_TYPES"></a>
</div> </div>
<div id="DuckDB.Parser.BITWISE" class="classattr"> <div id="DuckDB.Parser.BITWISE" class="classattr">
<div class="attr variable"> <div class="attr variable">
@ -1377,6 +1379,18 @@ Default: 3</li>
</div>
<div id="DuckDB.Parser.SUPPORTS_USER_DEFINED_TYPES" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_USER_DEFINED_TYPES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#DuckDB.Parser.SUPPORTS_USER_DEFINED_TYPES"></a>
</div> </div>
<div id="DuckDB.Parser.NULL_ORDERING" class="classattr"> <div id="DuckDB.Parser.NULL_ORDERING" class="classattr">
<div class="attr variable"> <div class="attr variable">
@ -1502,6 +1516,7 @@ Default: 3</li>
<dd id="DuckDB.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd> <dd id="DuckDB.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd>
<dd id="DuckDB.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd> <dd id="DuckDB.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd>
<dd id="DuckDB.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd> <dd id="DuckDB.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd>
<dd id="DuckDB.Parser.FETCH_TOKENS" class="variable"><a href="../parser.html#Parser.FETCH_TOKENS">FETCH_TOKENS</a></dd>
<dd id="DuckDB.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd> <dd id="DuckDB.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd>
<dd id="DuckDB.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd> <dd id="DuckDB.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd>
<dd id="DuckDB.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd> <dd id="DuckDB.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd>
@ -1970,26 +1985,26 @@ Default: True</li>
</div> </div>
<a class="headerlink" href="#DuckDB.Generator.can_identify"></a> <a class="headerlink" href="#DuckDB.Generator.can_identify"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Generator.can_identify-257"><a href="#DuckDB.Generator.can_identify-257"><span class="linenos">257</span></a> <span class="nd">@classmethod</span> <div class="pdoc-code codehilite"><pre><span></span><span id="DuckDB.Generator.can_identify-260"><a href="#DuckDB.Generator.can_identify-260"><span class="linenos">260</span></a> <span class="nd">@classmethod</span>
</span><span id="DuckDB.Generator.can_identify-258"><a href="#DuckDB.Generator.can_identify-258"><span class="linenos">258</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="DuckDB.Generator.can_identify-261"><a href="#DuckDB.Generator.can_identify-261"><span class="linenos">261</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="DuckDB.Generator.can_identify-259"><a href="#DuckDB.Generator.can_identify-259"><span class="linenos">259</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="DuckDB.Generator.can_identify-262"><a href="#DuckDB.Generator.can_identify-262"><span class="linenos">262</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="DuckDB.Generator.can_identify-260"><a href="#DuckDB.Generator.can_identify-260"><span class="linenos">260</span></a> </span><span id="DuckDB.Generator.can_identify-263"><a href="#DuckDB.Generator.can_identify-263"><span class="linenos">263</span></a>
</span><span id="DuckDB.Generator.can_identify-261"><a href="#DuckDB.Generator.can_identify-261"><span class="linenos">261</span></a><span class="sd"> Args:</span> </span><span id="DuckDB.Generator.can_identify-264"><a href="#DuckDB.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> Args:</span>
</span><span id="DuckDB.Generator.can_identify-262"><a href="#DuckDB.Generator.can_identify-262"><span class="linenos">262</span></a><span class="sd"> text: The text to check.</span> </span><span id="DuckDB.Generator.can_identify-265"><a href="#DuckDB.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> text: The text to check.</span>
</span><span id="DuckDB.Generator.can_identify-263"><a href="#DuckDB.Generator.can_identify-263"><span class="linenos">263</span></a><span class="sd"> identify:</span> </span><span id="DuckDB.Generator.can_identify-266"><a href="#DuckDB.Generator.can_identify-266"><span class="linenos">266</span></a><span class="sd"> identify:</span>
</span><span id="DuckDB.Generator.can_identify-264"><a href="#DuckDB.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span> </span><span id="DuckDB.Generator.can_identify-267"><a href="#DuckDB.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span>
</span><span id="DuckDB.Generator.can_identify-265"><a href="#DuckDB.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span> </span><span id="DuckDB.Generator.can_identify-268"><a href="#DuckDB.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span>
</span><span id="DuckDB.Generator.can_identify-266"><a href="#DuckDB.Generator.can_identify-266"><span class="linenos">266</span></a> </span><span id="DuckDB.Generator.can_identify-269"><a href="#DuckDB.Generator.can_identify-269"><span class="linenos">269</span></a>
</span><span id="DuckDB.Generator.can_identify-267"><a href="#DuckDB.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> Returns:</span> </span><span id="DuckDB.Generator.can_identify-270"><a href="#DuckDB.Generator.can_identify-270"><span class="linenos">270</span></a><span class="sd"> Returns:</span>
</span><span id="DuckDB.Generator.can_identify-268"><a href="#DuckDB.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> Whether or not the given text can be identified.</span> </span><span id="DuckDB.Generator.can_identify-271"><a href="#DuckDB.Generator.can_identify-271"><span class="linenos">271</span></a><span class="sd"> Whether or not the given text can be identified.</span>
</span><span id="DuckDB.Generator.can_identify-269"><a href="#DuckDB.Generator.can_identify-269"><span class="linenos">269</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="DuckDB.Generator.can_identify-272"><a href="#DuckDB.Generator.can_identify-272"><span class="linenos">272</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="DuckDB.Generator.can_identify-270"><a href="#DuckDB.Generator.can_identify-270"><span class="linenos">270</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="DuckDB.Generator.can_identify-273"><a href="#DuckDB.Generator.can_identify-273"><span class="linenos">273</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="DuckDB.Generator.can_identify-271"><a href="#DuckDB.Generator.can_identify-271"><span class="linenos">271</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="DuckDB.Generator.can_identify-274"><a href="#DuckDB.Generator.can_identify-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="kc">True</span>
</span><span id="DuckDB.Generator.can_identify-272"><a href="#DuckDB.Generator.can_identify-272"><span class="linenos">272</span></a>
</span><span id="DuckDB.Generator.can_identify-273"><a href="#DuckDB.Generator.can_identify-273"><span class="linenos">273</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="DuckDB.Generator.can_identify-274"><a href="#DuckDB.Generator.can_identify-274"><span class="linenos">274</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="DuckDB.Generator.can_identify-275"><a href="#DuckDB.Generator.can_identify-275"><span class="linenos">275</span></a> </span><span id="DuckDB.Generator.can_identify-275"><a href="#DuckDB.Generator.can_identify-275"><span class="linenos">275</span></a>
</span><span id="DuckDB.Generator.can_identify-276"><a href="#DuckDB.Generator.can_identify-276"><span class="linenos">276</span></a> <span class="k">return</span> <span class="kc">False</span> </span><span id="DuckDB.Generator.can_identify-276"><a href="#DuckDB.Generator.can_identify-276"><span class="linenos">276</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="DuckDB.Generator.can_identify-277"><a href="#DuckDB.Generator.can_identify-277"><span class="linenos">277</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="DuckDB.Generator.can_identify-278"><a href="#DuckDB.Generator.can_identify-278"><span class="linenos">278</span></a>
</span><span id="DuckDB.Generator.can_identify-279"><a href="#DuckDB.Generator.can_identify-279"><span class="linenos">279</span></a> <span class="k">return</span> <span class="kc">False</span>
</span></pre></div> </span></pre></div>

View file

@ -48,6 +48,9 @@
<li> <li>
<a class="variable" href="#Hive.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a> <a class="variable" href="#Hive.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a>
</li> </li>
<li>
<a class="variable" href="#Hive.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a>
</li>
<li> <li>
<a class="variable" href="#Hive.RESOLVES_IDENTIFIERS_AS_UPPERCASE">RESOLVES_IDENTIFIERS_AS_UPPERCASE</a> <a class="variable" href="#Hive.RESOLVES_IDENTIFIERS_AS_UPPERCASE">RESOLVES_IDENTIFIERS_AS_UPPERCASE</a>
</li> </li>
@ -99,9 +102,6 @@
<li> <li>
<a class="variable" href="#Hive.Parser.STRICT_CAST">STRICT_CAST</a> <a class="variable" href="#Hive.Parser.STRICT_CAST">STRICT_CAST</a>
</li> </li>
<li>
<a class="variable" href="#Hive.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a>
</li>
<li> <li>
<a class="variable" href="#Hive.Parser.FUNCTIONS">FUNCTIONS</a> <a class="variable" href="#Hive.Parser.FUNCTIONS">FUNCTIONS</a>
</li> </li>
@ -117,6 +117,9 @@
<li> <li>
<a class="variable" href="#Hive.Parser.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a> <a class="variable" href="#Hive.Parser.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a>
</li> </li>
<li>
<a class="variable" href="#Hive.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a>
</li>
<li> <li>
<a class="variable" href="#Hive.Parser.SHOW_TRIE">SHOW_TRIE</a> <a class="variable" href="#Hive.Parser.SHOW_TRIE">SHOW_TRIE</a>
</li> </li>
@ -472,79 +475,79 @@
</span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a><span class="k">class</span> <span class="nc">Hive</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> </span><span id="L-150"><a href="#L-150"><span class="linenos">150</span></a><span class="k">class</span> <span class="nc">Hive</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span>
</span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a> <span class="n">ALIAS_POST_TABLESAMPLE</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-151"><a href="#L-151"><span class="linenos">151</span></a> <span class="n">ALIAS_POST_TABLESAMPLE</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-152"><a href="#L-152"><span class="linenos">152</span></a> <span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> </span><span id="L-153"><a href="#L-153"><span class="linenos">153</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a> <span class="c1"># https://spark.apache.org/docs/latest/sql-ref-identifier.html#description</span> </span><span id="L-154"><a href="#L-154"><span class="linenos">154</span></a>
</span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a> <span class="n">RESOLVES_IDENTIFIERS_AS_UPPERCASE</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="L-155"><a href="#L-155"><span class="linenos">155</span></a> <span class="c1"># https://spark.apache.org/docs/latest/sql-ref-identifier.html#description</span>
</span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> </span><span id="L-156"><a href="#L-156"><span class="linenos">156</span></a> <span class="n">RESOLVES_IDENTIFIERS_AS_UPPERCASE</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-157"><a href="#L-157"><span class="linenos">157</span></a>
</span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a> <span class="s2">&quot;y&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span> </span><span id="L-158"><a href="#L-158"><span class="linenos">158</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="s2">&quot;Y&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span> </span><span id="L-159"><a href="#L-159"><span class="linenos">159</span></a> <span class="s2">&quot;y&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span>
</span><span id="L-160"><a href="#L-160"><span class="linenos">160</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><span id="L-160"><a href="#L-160"><span class="linenos">160</span></a> <span class="s2">&quot;Y&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span>
</span><span id="L-161"><a href="#L-161"><span class="linenos">161</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><span id="L-161"><a href="#L-161"><span class="linenos">161</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><span id="L-162"><a href="#L-162"><span class="linenos">162</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><span id="L-162"><a href="#L-162"><span class="linenos">162</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><span id="L-163"><a href="#L-163"><span class="linenos">163</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><span id="L-163"><a href="#L-163"><span class="linenos">163</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><span id="L-164"><a href="#L-164"><span class="linenos">164</span></a> <span class="s2">&quot;MMMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&quot;</span><span class="p">,</span> </span><span id="L-164"><a href="#L-164"><span class="linenos">164</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><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a> <span class="s2">&quot;MMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span> </span><span id="L-165"><a href="#L-165"><span class="linenos">165</span></a> <span class="s2">&quot;MMMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&quot;</span><span class="p">,</span>
</span><span id="L-166"><a href="#L-166"><span class="linenos">166</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><span id="L-166"><a href="#L-166"><span class="linenos">166</span></a> <span class="s2">&quot;MMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span>
</span><span id="L-167"><a href="#L-167"><span class="linenos">167</span></a> <span class="s2">&quot;M&quot;</span><span class="p">:</span> <span class="s2">&quot;%-m&quot;</span><span class="p">,</span> </span><span id="L-167"><a href="#L-167"><span class="linenos">167</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><span id="L-168"><a href="#L-168"><span class="linenos">168</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><span id="L-168"><a href="#L-168"><span class="linenos">168</span></a> <span class="s2">&quot;M&quot;</span><span class="p">:</span> <span class="s2">&quot;%-m&quot;</span><span class="p">,</span>
</span><span id="L-169"><a href="#L-169"><span class="linenos">169</span></a> <span class="s2">&quot;d&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><span id="L-169"><a href="#L-169"><span class="linenos">169</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><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a> <span class="s2">&quot;HH&quot;</span><span class="p">:</span> <span class="s2">&quot;%H&quot;</span><span class="p">,</span> </span><span id="L-170"><a href="#L-170"><span class="linenos">170</span></a> <span class="s2">&quot;d&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><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> <span class="s2">&quot;H&quot;</span><span class="p">:</span> <span class="s2">&quot;%-H&quot;</span><span class="p">,</span> </span><span id="L-171"><a href="#L-171"><span class="linenos">171</span></a> <span class="s2">&quot;HH&quot;</span><span class="p">:</span> <span class="s2">&quot;%H&quot;</span><span class="p">,</span>
</span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> <span class="s2">&quot;hh&quot;</span><span class="p">:</span> <span class="s2">&quot;%I&quot;</span><span class="p">,</span> </span><span id="L-172"><a href="#L-172"><span class="linenos">172</span></a> <span class="s2">&quot;H&quot;</span><span class="p">:</span> <span class="s2">&quot;%-H&quot;</span><span class="p">,</span>
</span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="s2">&quot;h&quot;</span><span class="p">:</span> <span class="s2">&quot;%-I&quot;</span><span class="p">,</span> </span><span id="L-173"><a href="#L-173"><span class="linenos">173</span></a> <span class="s2">&quot;hh&quot;</span><span class="p">:</span> <span class="s2">&quot;%I&quot;</span><span class="p">,</span>
</span><span id="L-174"><a href="#L-174"><span class="linenos">174</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><span id="L-174"><a href="#L-174"><span class="linenos">174</span></a> <span class="s2">&quot;h&quot;</span><span class="p">:</span> <span class="s2">&quot;%-I&quot;</span><span class="p">,</span>
</span><span id="L-175"><a href="#L-175"><span class="linenos">175</span></a> <span class="s2">&quot;m&quot;</span><span class="p">:</span> <span class="s2">&quot;%-M&quot;</span><span class="p">,</span> </span><span id="L-175"><a href="#L-175"><span class="linenos">175</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><span id="L-176"><a href="#L-176"><span class="linenos">176</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><span id="L-176"><a href="#L-176"><span class="linenos">176</span></a> <span class="s2">&quot;m&quot;</span><span class="p">:</span> <span class="s2">&quot;%-M&quot;</span><span class="p">,</span>
</span><span id="L-177"><a href="#L-177"><span class="linenos">177</span></a> <span class="s2">&quot;s&quot;</span><span class="p">:</span> <span class="s2">&quot;%-S&quot;</span><span class="p">,</span> </span><span id="L-177"><a href="#L-177"><span class="linenos">177</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><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a> <span class="s2">&quot;SSSSSS&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><span id="L-178"><a href="#L-178"><span class="linenos">178</span></a> <span class="s2">&quot;s&quot;</span><span class="p">:</span> <span class="s2">&quot;%-S&quot;</span><span class="p">,</span>
</span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a> <span class="s2">&quot;a&quot;</span><span class="p">:</span> <span class="s2">&quot;%p&quot;</span><span class="p">,</span> </span><span id="L-179"><a href="#L-179"><span class="linenos">179</span></a> <span class="s2">&quot;SSSSSS&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><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a> <span class="s2">&quot;DD&quot;</span><span class="p">:</span> <span class="s2">&quot;%j&quot;</span><span class="p">,</span> </span><span id="L-180"><a href="#L-180"><span class="linenos">180</span></a> <span class="s2">&quot;a&quot;</span><span class="p">:</span> <span class="s2">&quot;%p&quot;</span><span class="p">,</span>
</span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a> <span class="s2">&quot;D&quot;</span><span class="p">:</span> <span class="s2">&quot;%-j&quot;</span><span class="p">,</span> </span><span id="L-181"><a href="#L-181"><span class="linenos">181</span></a> <span class="s2">&quot;DD&quot;</span><span class="p">:</span> <span class="s2">&quot;%j&quot;</span><span class="p">,</span>
</span><span id="L-182"><a href="#L-182"><span class="linenos">182</span></a> <span class="s2">&quot;E&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-182"><a href="#L-182"><span class="linenos">182</span></a> <span class="s2">&quot;D&quot;</span><span class="p">:</span> <span class="s2">&quot;%-j&quot;</span><span class="p">,</span>
</span><span id="L-183"><a href="#L-183"><span class="linenos">183</span></a> <span class="s2">&quot;EE&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-183"><a href="#L-183"><span class="linenos">183</span></a> <span class="s2">&quot;E&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-184"><a href="#L-184"><span class="linenos">184</span></a> <span class="s2">&quot;EEE&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-184"><a href="#L-184"><span class="linenos">184</span></a> <span class="s2">&quot;EE&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-185"><a href="#L-185"><span class="linenos">185</span></a> <span class="s2">&quot;EEEE&quot;</span><span class="p">:</span> <span class="s2">&quot;%A&quot;</span><span class="p">,</span> </span><span id="L-185"><a href="#L-185"><span class="linenos">185</span></a> <span class="s2">&quot;EEE&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-186"><a href="#L-186"><span class="linenos">186</span></a> <span class="p">}</span> </span><span id="L-186"><a href="#L-186"><span class="linenos">186</span></a> <span class="s2">&quot;EEEE&quot;</span><span class="p">:</span> <span class="s2">&quot;%A&quot;</span><span class="p">,</span>
</span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a> </span><span id="L-187"><a href="#L-187"><span class="linenos">187</span></a> <span class="p">}</span>
</span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a> <span class="n">DATE_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyy-MM-dd&#39;&quot;</span> </span><span id="L-188"><a href="#L-188"><span class="linenos">188</span></a>
</span><span id="L-189"><a href="#L-189"><span class="linenos">189</span></a> <span class="n">DATEINT_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyyMMdd&#39;&quot;</span> </span><span id="L-189"><a href="#L-189"><span class="linenos">189</span></a> <span class="n">DATE_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyy-MM-dd&#39;&quot;</span>
</span><span id="L-190"><a href="#L-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 HH:mm:ss&#39;&quot;</span> </span><span id="L-190"><a href="#L-190"><span class="linenos">190</span></a> <span class="n">DATEINT_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyyMMdd&#39;&quot;</span>
</span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a> </span><span id="L-191"><a href="#L-191"><span class="linenos">191</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyy-MM-dd HH:mm:ss&#39;&quot;</span>
</span><span id="L-192"><a href="#L-192"><span class="linenos">192</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-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">QUOTES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;&#39;&quot;</span><span class="p">,</span> <span class="s1">&#39;&quot;&#39;</span><span class="p">]</span> </span><span id="L-193"><a href="#L-193"><span class="linenos">193</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-194"><a href="#L-194"><span class="linenos">194</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;`&quot;</span><span class="p">]</span> </span><span id="L-194"><a href="#L-194"><span class="linenos">194</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="s1">&#39;&quot;&#39;</span><span class="p">]</span>
</span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">]</span> </span><span id="L-195"><a href="#L-195"><span class="linenos">195</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;`&quot;</span><span class="p">]</span>
</span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a> <span class="n">ENCODE</span> <span class="o">=</span> <span class="s2">&quot;utf-8&quot;</span> </span><span id="L-196"><a href="#L-196"><span class="linenos">196</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">]</span>
</span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a> </span><span id="L-197"><a href="#L-197"><span class="linenos">197</span></a> <span class="n">ENCODE</span> <span class="o">=</span> <span class="s2">&quot;utf-8&quot;</span>
</span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-198"><a href="#L-198"><span class="linenos">198</span></a>
</span><span id="L-199"><a href="#L-199"><span class="linenos">199</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-199"><a href="#L-199"><span class="linenos">199</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-200"><a href="#L-200"><span class="linenos">200</span></a> <span class="s2">&quot;ADD ARCHIVE&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-200"><a href="#L-200"><span class="linenos">200</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-201"><a href="#L-201"><span class="linenos">201</span></a> <span class="s2">&quot;ADD ARCHIVES&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-201"><a href="#L-201"><span class="linenos">201</span></a> <span class="s2">&quot;ADD ARCHIVE&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-202"><a href="#L-202"><span class="linenos">202</span></a> <span class="s2">&quot;ADD FILE&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-202"><a href="#L-202"><span class="linenos">202</span></a> <span class="s2">&quot;ADD ARCHIVES&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-203"><a href="#L-203"><span class="linenos">203</span></a> <span class="s2">&quot;ADD FILES&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-203"><a href="#L-203"><span class="linenos">203</span></a> <span class="s2">&quot;ADD FILE&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-204"><a href="#L-204"><span class="linenos">204</span></a> <span class="s2">&quot;ADD JAR&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-204"><a href="#L-204"><span class="linenos">204</span></a> <span class="s2">&quot;ADD FILES&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-205"><a href="#L-205"><span class="linenos">205</span></a> <span class="s2">&quot;ADD JARS&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-205"><a href="#L-205"><span class="linenos">205</span></a> <span class="s2">&quot;ADD JAR&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-206"><a href="#L-206"><span class="linenos">206</span></a> <span class="s2">&quot;MSCK REPAIR&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-206"><a href="#L-206"><span class="linenos">206</span></a> <span class="s2">&quot;ADD JARS&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-207"><a href="#L-207"><span class="linenos">207</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-207"><a href="#L-207"><span class="linenos">207</span></a> <span class="s2">&quot;MSCK REPAIR&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-208"><a href="#L-208"><span class="linenos">208</span></a> <span class="s2">&quot;WITH SERDEPROPERTIES&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERDE_PROPERTIES</span><span class="p">,</span> </span><span id="L-208"><a href="#L-208"><span class="linenos">208</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-209"><a href="#L-209"><span class="linenos">209</span></a> <span class="s2">&quot;TIMESTAMP AS OF&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_SNAPSHOT</span><span class="p">,</span> </span><span id="L-209"><a href="#L-209"><span class="linenos">209</span></a> <span class="s2">&quot;WITH SERDEPROPERTIES&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERDE_PROPERTIES</span><span class="p">,</span>
</span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a> <span class="s2">&quot;VERSION AS OF&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VERSION_SNAPSHOT</span><span class="p">,</span> </span><span id="L-210"><a href="#L-210"><span class="linenos">210</span></a> <span class="s2">&quot;TIMESTAMP AS OF&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_SNAPSHOT</span><span class="p">,</span>
</span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a> <span class="p">}</span> </span><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a> <span class="s2">&quot;VERSION AS OF&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VERSION_SNAPSHOT</span><span class="p">,</span>
</span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a> </span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a> <span class="p">}</span>
</span><span id="L-213"><a href="#L-213"><span class="linenos">213</span></a> <span class="n">NUMERIC_LITERALS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-213"><a href="#L-213"><span class="linenos">213</span></a>
</span><span id="L-214"><a href="#L-214"><span class="linenos">214</span></a> <span class="s2">&quot;L&quot;</span><span class="p">:</span> <span class="s2">&quot;BIGINT&quot;</span><span class="p">,</span> </span><span id="L-214"><a href="#L-214"><span class="linenos">214</span></a> <span class="n">NUMERIC_LITERALS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-215"><a href="#L-215"><span class="linenos">215</span></a> <span class="s2">&quot;S&quot;</span><span class="p">:</span> <span class="s2">&quot;SMALLINT&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;L&quot;</span><span class="p">:</span> <span class="s2">&quot;BIGINT&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;Y&quot;</span><span class="p">:</span> <span class="s2">&quot;TINYINT&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;S&quot;</span><span class="p">:</span> <span class="s2">&quot;SMALLINT&quot;</span><span class="p">,</span>
</span><span id="L-217"><a href="#L-217"><span class="linenos">217</span></a> <span class="s2">&quot;D&quot;</span><span class="p">:</span> <span class="s2">&quot;DOUBLE&quot;</span><span class="p">,</span> </span><span id="L-217"><a href="#L-217"><span class="linenos">217</span></a> <span class="s2">&quot;Y&quot;</span><span class="p">:</span> <span class="s2">&quot;TINYINT&quot;</span><span class="p">,</span>
</span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a> <span class="s2">&quot;F&quot;</span><span class="p">:</span> <span class="s2">&quot;FLOAT&quot;</span><span class="p">,</span> </span><span id="L-218"><a href="#L-218"><span class="linenos">218</span></a> <span class="s2">&quot;D&quot;</span><span class="p">:</span> <span class="s2">&quot;DOUBLE&quot;</span><span class="p">,</span>
</span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a> <span class="s2">&quot;BD&quot;</span><span class="p">:</span> <span class="s2">&quot;DECIMAL&quot;</span><span class="p">,</span> </span><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a> <span class="s2">&quot;F&quot;</span><span class="p">:</span> <span class="s2">&quot;FLOAT&quot;</span><span class="p">,</span>
</span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> <span class="p">}</span> </span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> <span class="s2">&quot;BD&quot;</span><span class="p">:</span> <span class="s2">&quot;DECIMAL&quot;</span><span class="p">,</span>
</span><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a> </span><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a> <span class="p">}</span>
</span><span id="L-222"><a href="#L-222"><span class="linenos">222</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-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">LOG_DEFAULTS_TO_LN</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-223"><a href="#L-223"><span class="linenos">223</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-224"><a href="#L-224"><span class="linenos">224</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="L-224"><a href="#L-224"><span class="linenos">224</span></a> <span class="n">LOG_DEFAULTS_TO_LN</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-225"><a href="#L-225"><span class="linenos">225</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="L-225"><a href="#L-225"><span class="linenos">225</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-226"><a href="#L-226"><span class="linenos">226</span></a> </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">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-227"><a href="#L-227"><span class="linenos">227</span></a> <span class="n">FUNCTIONS</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">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-228"><a href="#L-228"><span class="linenos">228</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>
@ -886,79 +889,79 @@
<div class="pdoc-code codehilite"><pre><span></span><span id="Hive-151"><a href="#Hive-151"><span class="linenos">151</span></a><span class="k">class</span> <span class="nc">Hive</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span> <div class="pdoc-code codehilite"><pre><span></span><span id="Hive-151"><a href="#Hive-151"><span class="linenos">151</span></a><span class="k">class</span> <span class="nc">Hive</span><span class="p">(</span><span class="n">Dialect</span><span class="p">):</span>
</span><span id="Hive-152"><a href="#Hive-152"><span class="linenos">152</span></a> <span class="n">ALIAS_POST_TABLESAMPLE</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="Hive-152"><a href="#Hive-152"><span class="linenos">152</span></a> <span class="n">ALIAS_POST_TABLESAMPLE</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Hive-153"><a href="#Hive-153"><span class="linenos">153</span></a> <span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="Hive-153"><a href="#Hive-153"><span class="linenos">153</span></a> <span class="n">IDENTIFIERS_CAN_START_WITH_DIGIT</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Hive-154"><a href="#Hive-154"><span class="linenos">154</span></a> </span><span id="Hive-154"><a href="#Hive-154"><span class="linenos">154</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Hive-155"><a href="#Hive-155"><span class="linenos">155</span></a> <span class="c1"># https://spark.apache.org/docs/latest/sql-ref-identifier.html#description</span> </span><span id="Hive-155"><a href="#Hive-155"><span class="linenos">155</span></a>
</span><span id="Hive-156"><a href="#Hive-156"><span class="linenos">156</span></a> <span class="n">RESOLVES_IDENTIFIERS_AS_UPPERCASE</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="Hive-156"><a href="#Hive-156"><span class="linenos">156</span></a> <span class="c1"># https://spark.apache.org/docs/latest/sql-ref-identifier.html#description</span>
</span><span id="Hive-157"><a href="#Hive-157"><span class="linenos">157</span></a> </span><span id="Hive-157"><a href="#Hive-157"><span class="linenos">157</span></a> <span class="n">RESOLVES_IDENTIFIERS_AS_UPPERCASE</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="Hive-158"><a href="#Hive-158"><span class="linenos">158</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Hive-158"><a href="#Hive-158"><span class="linenos">158</span></a>
</span><span id="Hive-159"><a href="#Hive-159"><span class="linenos">159</span></a> <span class="s2">&quot;y&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span> </span><span id="Hive-159"><a href="#Hive-159"><span class="linenos">159</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Hive-160"><a href="#Hive-160"><span class="linenos">160</span></a> <span class="s2">&quot;Y&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span> </span><span id="Hive-160"><a href="#Hive-160"><span class="linenos">160</span></a> <span class="s2">&quot;y&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span>
</span><span id="Hive-161"><a href="#Hive-161"><span class="linenos">161</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><span id="Hive-161"><a href="#Hive-161"><span class="linenos">161</span></a> <span class="s2">&quot;Y&quot;</span><span class="p">:</span> <span class="s2">&quot;%Y&quot;</span><span class="p">,</span>
</span><span id="Hive-162"><a href="#Hive-162"><span class="linenos">162</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><span id="Hive-162"><a href="#Hive-162"><span class="linenos">162</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><span id="Hive-163"><a href="#Hive-163"><span class="linenos">163</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><span id="Hive-163"><a href="#Hive-163"><span class="linenos">163</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><span id="Hive-164"><a href="#Hive-164"><span class="linenos">164</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><span id="Hive-164"><a href="#Hive-164"><span class="linenos">164</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><span id="Hive-165"><a href="#Hive-165"><span class="linenos">165</span></a> <span class="s2">&quot;MMMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&quot;</span><span class="p">,</span> </span><span id="Hive-165"><a href="#Hive-165"><span class="linenos">165</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><span id="Hive-166"><a href="#Hive-166"><span class="linenos">166</span></a> <span class="s2">&quot;MMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span> </span><span id="Hive-166"><a href="#Hive-166"><span class="linenos">166</span></a> <span class="s2">&quot;MMMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&quot;</span><span class="p">,</span>
</span><span id="Hive-167"><a href="#Hive-167"><span class="linenos">167</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><span id="Hive-167"><a href="#Hive-167"><span class="linenos">167</span></a> <span class="s2">&quot;MMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span>
</span><span id="Hive-168"><a href="#Hive-168"><span class="linenos">168</span></a> <span class="s2">&quot;M&quot;</span><span class="p">:</span> <span class="s2">&quot;%-m&quot;</span><span class="p">,</span> </span><span id="Hive-168"><a href="#Hive-168"><span class="linenos">168</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><span id="Hive-169"><a href="#Hive-169"><span class="linenos">169</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><span id="Hive-169"><a href="#Hive-169"><span class="linenos">169</span></a> <span class="s2">&quot;M&quot;</span><span class="p">:</span> <span class="s2">&quot;%-m&quot;</span><span class="p">,</span>
</span><span id="Hive-170"><a href="#Hive-170"><span class="linenos">170</span></a> <span class="s2">&quot;d&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><span id="Hive-170"><a href="#Hive-170"><span class="linenos">170</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><span id="Hive-171"><a href="#Hive-171"><span class="linenos">171</span></a> <span class="s2">&quot;HH&quot;</span><span class="p">:</span> <span class="s2">&quot;%H&quot;</span><span class="p">,</span> </span><span id="Hive-171"><a href="#Hive-171"><span class="linenos">171</span></a> <span class="s2">&quot;d&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><span id="Hive-172"><a href="#Hive-172"><span class="linenos">172</span></a> <span class="s2">&quot;H&quot;</span><span class="p">:</span> <span class="s2">&quot;%-H&quot;</span><span class="p">,</span> </span><span id="Hive-172"><a href="#Hive-172"><span class="linenos">172</span></a> <span class="s2">&quot;HH&quot;</span><span class="p">:</span> <span class="s2">&quot;%H&quot;</span><span class="p">,</span>
</span><span id="Hive-173"><a href="#Hive-173"><span class="linenos">173</span></a> <span class="s2">&quot;hh&quot;</span><span class="p">:</span> <span class="s2">&quot;%I&quot;</span><span class="p">,</span> </span><span id="Hive-173"><a href="#Hive-173"><span class="linenos">173</span></a> <span class="s2">&quot;H&quot;</span><span class="p">:</span> <span class="s2">&quot;%-H&quot;</span><span class="p">,</span>
</span><span id="Hive-174"><a href="#Hive-174"><span class="linenos">174</span></a> <span class="s2">&quot;h&quot;</span><span class="p">:</span> <span class="s2">&quot;%-I&quot;</span><span class="p">,</span> </span><span id="Hive-174"><a href="#Hive-174"><span class="linenos">174</span></a> <span class="s2">&quot;hh&quot;</span><span class="p">:</span> <span class="s2">&quot;%I&quot;</span><span class="p">,</span>
</span><span id="Hive-175"><a href="#Hive-175"><span class="linenos">175</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><span id="Hive-175"><a href="#Hive-175"><span class="linenos">175</span></a> <span class="s2">&quot;h&quot;</span><span class="p">:</span> <span class="s2">&quot;%-I&quot;</span><span class="p">,</span>
</span><span id="Hive-176"><a href="#Hive-176"><span class="linenos">176</span></a> <span class="s2">&quot;m&quot;</span><span class="p">:</span> <span class="s2">&quot;%-M&quot;</span><span class="p">,</span> </span><span id="Hive-176"><a href="#Hive-176"><span class="linenos">176</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><span id="Hive-177"><a href="#Hive-177"><span class="linenos">177</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><span id="Hive-177"><a href="#Hive-177"><span class="linenos">177</span></a> <span class="s2">&quot;m&quot;</span><span class="p">:</span> <span class="s2">&quot;%-M&quot;</span><span class="p">,</span>
</span><span id="Hive-178"><a href="#Hive-178"><span class="linenos">178</span></a> <span class="s2">&quot;s&quot;</span><span class="p">:</span> <span class="s2">&quot;%-S&quot;</span><span class="p">,</span> </span><span id="Hive-178"><a href="#Hive-178"><span class="linenos">178</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><span id="Hive-179"><a href="#Hive-179"><span class="linenos">179</span></a> <span class="s2">&quot;SSSSSS&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><span id="Hive-179"><a href="#Hive-179"><span class="linenos">179</span></a> <span class="s2">&quot;s&quot;</span><span class="p">:</span> <span class="s2">&quot;%-S&quot;</span><span class="p">,</span>
</span><span id="Hive-180"><a href="#Hive-180"><span class="linenos">180</span></a> <span class="s2">&quot;a&quot;</span><span class="p">:</span> <span class="s2">&quot;%p&quot;</span><span class="p">,</span> </span><span id="Hive-180"><a href="#Hive-180"><span class="linenos">180</span></a> <span class="s2">&quot;SSSSSS&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><span id="Hive-181"><a href="#Hive-181"><span class="linenos">181</span></a> <span class="s2">&quot;DD&quot;</span><span class="p">:</span> <span class="s2">&quot;%j&quot;</span><span class="p">,</span> </span><span id="Hive-181"><a href="#Hive-181"><span class="linenos">181</span></a> <span class="s2">&quot;a&quot;</span><span class="p">:</span> <span class="s2">&quot;%p&quot;</span><span class="p">,</span>
</span><span id="Hive-182"><a href="#Hive-182"><span class="linenos">182</span></a> <span class="s2">&quot;D&quot;</span><span class="p">:</span> <span class="s2">&quot;%-j&quot;</span><span class="p">,</span> </span><span id="Hive-182"><a href="#Hive-182"><span class="linenos">182</span></a> <span class="s2">&quot;DD&quot;</span><span class="p">:</span> <span class="s2">&quot;%j&quot;</span><span class="p">,</span>
</span><span id="Hive-183"><a href="#Hive-183"><span class="linenos">183</span></a> <span class="s2">&quot;E&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="Hive-183"><a href="#Hive-183"><span class="linenos">183</span></a> <span class="s2">&quot;D&quot;</span><span class="p">:</span> <span class="s2">&quot;%-j&quot;</span><span class="p">,</span>
</span><span id="Hive-184"><a href="#Hive-184"><span class="linenos">184</span></a> <span class="s2">&quot;EE&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="Hive-184"><a href="#Hive-184"><span class="linenos">184</span></a> <span class="s2">&quot;E&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="Hive-185"><a href="#Hive-185"><span class="linenos">185</span></a> <span class="s2">&quot;EEE&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="Hive-185"><a href="#Hive-185"><span class="linenos">185</span></a> <span class="s2">&quot;EE&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="Hive-186"><a href="#Hive-186"><span class="linenos">186</span></a> <span class="s2">&quot;EEEE&quot;</span><span class="p">:</span> <span class="s2">&quot;%A&quot;</span><span class="p">,</span> </span><span id="Hive-186"><a href="#Hive-186"><span class="linenos">186</span></a> <span class="s2">&quot;EEE&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="Hive-187"><a href="#Hive-187"><span class="linenos">187</span></a> <span class="p">}</span> </span><span id="Hive-187"><a href="#Hive-187"><span class="linenos">187</span></a> <span class="s2">&quot;EEEE&quot;</span><span class="p">:</span> <span class="s2">&quot;%A&quot;</span><span class="p">,</span>
</span><span id="Hive-188"><a href="#Hive-188"><span class="linenos">188</span></a> </span><span id="Hive-188"><a href="#Hive-188"><span class="linenos">188</span></a> <span class="p">}</span>
</span><span id="Hive-189"><a href="#Hive-189"><span class="linenos">189</span></a> <span class="n">DATE_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyy-MM-dd&#39;&quot;</span> </span><span id="Hive-189"><a href="#Hive-189"><span class="linenos">189</span></a>
</span><span id="Hive-190"><a href="#Hive-190"><span class="linenos">190</span></a> <span class="n">DATEINT_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyyMMdd&#39;&quot;</span> </span><span id="Hive-190"><a href="#Hive-190"><span class="linenos">190</span></a> <span class="n">DATE_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyy-MM-dd&#39;&quot;</span>
</span><span id="Hive-191"><a href="#Hive-191"><span class="linenos">191</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyy-MM-dd HH:mm:ss&#39;&quot;</span> </span><span id="Hive-191"><a href="#Hive-191"><span class="linenos">191</span></a> <span class="n">DATEINT_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyyMMdd&#39;&quot;</span>
</span><span id="Hive-192"><a href="#Hive-192"><span class="linenos">192</span></a> </span><span id="Hive-192"><a href="#Hive-192"><span class="linenos">192</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;yyyy-MM-dd HH:mm:ss&#39;&quot;</span>
</span><span id="Hive-193"><a href="#Hive-193"><span class="linenos">193</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="Hive-193"><a href="#Hive-193"><span class="linenos">193</span></a>
</span><span id="Hive-194"><a href="#Hive-194"><span class="linenos">194</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="s1">&#39;&quot;&#39;</span><span class="p">]</span> </span><span id="Hive-194"><a href="#Hive-194"><span class="linenos">194</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="Hive-195"><a href="#Hive-195"><span class="linenos">195</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;`&quot;</span><span class="p">]</span> </span><span id="Hive-195"><a href="#Hive-195"><span class="linenos">195</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="s1">&#39;&quot;&#39;</span><span class="p">]</span>
</span><span id="Hive-196"><a href="#Hive-196"><span class="linenos">196</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">]</span> </span><span id="Hive-196"><a href="#Hive-196"><span class="linenos">196</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;`&quot;</span><span class="p">]</span>
</span><span id="Hive-197"><a href="#Hive-197"><span class="linenos">197</span></a> <span class="n">ENCODE</span> <span class="o">=</span> <span class="s2">&quot;utf-8&quot;</span> </span><span id="Hive-197"><a href="#Hive-197"><span class="linenos">197</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">]</span>
</span><span id="Hive-198"><a href="#Hive-198"><span class="linenos">198</span></a> </span><span id="Hive-198"><a href="#Hive-198"><span class="linenos">198</span></a> <span class="n">ENCODE</span> <span class="o">=</span> <span class="s2">&quot;utf-8&quot;</span>
</span><span id="Hive-199"><a href="#Hive-199"><span class="linenos">199</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Hive-199"><a href="#Hive-199"><span class="linenos">199</span></a>
</span><span id="Hive-200"><a href="#Hive-200"><span class="linenos">200</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="Hive-200"><a href="#Hive-200"><span class="linenos">200</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Hive-201"><a href="#Hive-201"><span class="linenos">201</span></a> <span class="s2">&quot;ADD ARCHIVE&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="Hive-201"><a href="#Hive-201"><span class="linenos">201</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="Hive-202"><a href="#Hive-202"><span class="linenos">202</span></a> <span class="s2">&quot;ADD ARCHIVES&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="Hive-202"><a href="#Hive-202"><span class="linenos">202</span></a> <span class="s2">&quot;ADD ARCHIVE&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="Hive-203"><a href="#Hive-203"><span class="linenos">203</span></a> <span class="s2">&quot;ADD FILE&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="Hive-203"><a href="#Hive-203"><span class="linenos">203</span></a> <span class="s2">&quot;ADD ARCHIVES&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="Hive-204"><a href="#Hive-204"><span class="linenos">204</span></a> <span class="s2">&quot;ADD FILES&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="Hive-204"><a href="#Hive-204"><span class="linenos">204</span></a> <span class="s2">&quot;ADD FILE&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="Hive-205"><a href="#Hive-205"><span class="linenos">205</span></a> <span class="s2">&quot;ADD JAR&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="Hive-205"><a href="#Hive-205"><span class="linenos">205</span></a> <span class="s2">&quot;ADD FILES&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="Hive-206"><a href="#Hive-206"><span class="linenos">206</span></a> <span class="s2">&quot;ADD JARS&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="Hive-206"><a href="#Hive-206"><span class="linenos">206</span></a> <span class="s2">&quot;ADD JAR&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="Hive-207"><a href="#Hive-207"><span class="linenos">207</span></a> <span class="s2">&quot;MSCK REPAIR&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="Hive-207"><a href="#Hive-207"><span class="linenos">207</span></a> <span class="s2">&quot;ADD JARS&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="Hive-208"><a href="#Hive-208"><span class="linenos">208</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="Hive-208"><a href="#Hive-208"><span class="linenos">208</span></a> <span class="s2">&quot;MSCK REPAIR&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="Hive-209"><a href="#Hive-209"><span class="linenos">209</span></a> <span class="s2">&quot;WITH SERDEPROPERTIES&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERDE_PROPERTIES</span><span class="p">,</span> </span><span id="Hive-209"><a href="#Hive-209"><span class="linenos">209</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="Hive-210"><a href="#Hive-210"><span class="linenos">210</span></a> <span class="s2">&quot;TIMESTAMP AS OF&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_SNAPSHOT</span><span class="p">,</span> </span><span id="Hive-210"><a href="#Hive-210"><span class="linenos">210</span></a> <span class="s2">&quot;WITH SERDEPROPERTIES&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERDE_PROPERTIES</span><span class="p">,</span>
</span><span id="Hive-211"><a href="#Hive-211"><span class="linenos">211</span></a> <span class="s2">&quot;VERSION AS OF&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VERSION_SNAPSHOT</span><span class="p">,</span> </span><span id="Hive-211"><a href="#Hive-211"><span class="linenos">211</span></a> <span class="s2">&quot;TIMESTAMP AS OF&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_SNAPSHOT</span><span class="p">,</span>
</span><span id="Hive-212"><a href="#Hive-212"><span class="linenos">212</span></a> <span class="p">}</span> </span><span id="Hive-212"><a href="#Hive-212"><span class="linenos">212</span></a> <span class="s2">&quot;VERSION AS OF&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VERSION_SNAPSHOT</span><span class="p">,</span>
</span><span id="Hive-213"><a href="#Hive-213"><span class="linenos">213</span></a> </span><span id="Hive-213"><a href="#Hive-213"><span class="linenos">213</span></a> <span class="p">}</span>
</span><span id="Hive-214"><a href="#Hive-214"><span class="linenos">214</span></a> <span class="n">NUMERIC_LITERALS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Hive-214"><a href="#Hive-214"><span class="linenos">214</span></a>
</span><span id="Hive-215"><a href="#Hive-215"><span class="linenos">215</span></a> <span class="s2">&quot;L&quot;</span><span class="p">:</span> <span class="s2">&quot;BIGINT&quot;</span><span class="p">,</span> </span><span id="Hive-215"><a href="#Hive-215"><span class="linenos">215</span></a> <span class="n">NUMERIC_LITERALS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Hive-216"><a href="#Hive-216"><span class="linenos">216</span></a> <span class="s2">&quot;S&quot;</span><span class="p">:</span> <span class="s2">&quot;SMALLINT&quot;</span><span class="p">,</span> </span><span id="Hive-216"><a href="#Hive-216"><span class="linenos">216</span></a> <span class="s2">&quot;L&quot;</span><span class="p">:</span> <span class="s2">&quot;BIGINT&quot;</span><span class="p">,</span>
</span><span id="Hive-217"><a href="#Hive-217"><span class="linenos">217</span></a> <span class="s2">&quot;Y&quot;</span><span class="p">:</span> <span class="s2">&quot;TINYINT&quot;</span><span class="p">,</span> </span><span id="Hive-217"><a href="#Hive-217"><span class="linenos">217</span></a> <span class="s2">&quot;S&quot;</span><span class="p">:</span> <span class="s2">&quot;SMALLINT&quot;</span><span class="p">,</span>
</span><span id="Hive-218"><a href="#Hive-218"><span class="linenos">218</span></a> <span class="s2">&quot;D&quot;</span><span class="p">:</span> <span class="s2">&quot;DOUBLE&quot;</span><span class="p">,</span> </span><span id="Hive-218"><a href="#Hive-218"><span class="linenos">218</span></a> <span class="s2">&quot;Y&quot;</span><span class="p">:</span> <span class="s2">&quot;TINYINT&quot;</span><span class="p">,</span>
</span><span id="Hive-219"><a href="#Hive-219"><span class="linenos">219</span></a> <span class="s2">&quot;F&quot;</span><span class="p">:</span> <span class="s2">&quot;FLOAT&quot;</span><span class="p">,</span> </span><span id="Hive-219"><a href="#Hive-219"><span class="linenos">219</span></a> <span class="s2">&quot;D&quot;</span><span class="p">:</span> <span class="s2">&quot;DOUBLE&quot;</span><span class="p">,</span>
</span><span id="Hive-220"><a href="#Hive-220"><span class="linenos">220</span></a> <span class="s2">&quot;BD&quot;</span><span class="p">:</span> <span class="s2">&quot;DECIMAL&quot;</span><span class="p">,</span> </span><span id="Hive-220"><a href="#Hive-220"><span class="linenos">220</span></a> <span class="s2">&quot;F&quot;</span><span class="p">:</span> <span class="s2">&quot;FLOAT&quot;</span><span class="p">,</span>
</span><span id="Hive-221"><a href="#Hive-221"><span class="linenos">221</span></a> <span class="p">}</span> </span><span id="Hive-221"><a href="#Hive-221"><span class="linenos">221</span></a> <span class="s2">&quot;BD&quot;</span><span class="p">:</span> <span class="s2">&quot;DECIMAL&quot;</span><span class="p">,</span>
</span><span id="Hive-222"><a href="#Hive-222"><span class="linenos">222</span></a> </span><span id="Hive-222"><a href="#Hive-222"><span class="linenos">222</span></a> <span class="p">}</span>
</span><span id="Hive-223"><a href="#Hive-223"><span class="linenos">223</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="Hive-223"><a href="#Hive-223"><span class="linenos">223</span></a>
</span><span id="Hive-224"><a href="#Hive-224"><span class="linenos">224</span></a> <span class="n">LOG_DEFAULTS_TO_LN</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="Hive-224"><a href="#Hive-224"><span class="linenos">224</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="Hive-225"><a href="#Hive-225"><span class="linenos">225</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="Hive-225"><a href="#Hive-225"><span class="linenos">225</span></a> <span class="n">LOG_DEFAULTS_TO_LN</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Hive-226"><a href="#Hive-226"><span class="linenos">226</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="Hive-226"><a href="#Hive-226"><span class="linenos">226</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Hive-227"><a href="#Hive-227"><span class="linenos">227</span></a> </span><span id="Hive-227"><a href="#Hive-227"><span class="linenos">227</span></a>
</span><span id="Hive-228"><a href="#Hive-228"><span class="linenos">228</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Hive-228"><a href="#Hive-228"><span class="linenos">228</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Hive-229"><a href="#Hive-229"><span class="linenos">229</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="Hive-229"><a href="#Hive-229"><span class="linenos">229</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>
@ -1273,6 +1276,18 @@
</div>
<div id="Hive.SUPPORTS_USER_DEFINED_TYPES" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_USER_DEFINED_TYPES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Hive.SUPPORTS_USER_DEFINED_TYPES"></a>
</div> </div>
<div id="Hive.RESOLVES_IDENTIFIERS_AS_UPPERCASE" class="classattr"> <div id="Hive.RESOLVES_IDENTIFIERS_AS_UPPERCASE" class="classattr">
<div class="attr variable"> <div class="attr variable">
@ -1585,35 +1600,35 @@
</div> </div>
<a class="headerlink" href="#Hive.Tokenizer"></a> <a class="headerlink" href="#Hive.Tokenizer"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Hive.Tokenizer-193"><a href="#Hive.Tokenizer-193"><span class="linenos">193</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> <div class="pdoc-code codehilite"><pre><span></span><span id="Hive.Tokenizer-194"><a href="#Hive.Tokenizer-194"><span class="linenos">194</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="Hive.Tokenizer-194"><a href="#Hive.Tokenizer-194"><span class="linenos">194</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="s1">&#39;&quot;&#39;</span><span class="p">]</span> </span><span id="Hive.Tokenizer-195"><a href="#Hive.Tokenizer-195"><span class="linenos">195</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="s1">&#39;&quot;&#39;</span><span class="p">]</span>
</span><span id="Hive.Tokenizer-195"><a href="#Hive.Tokenizer-195"><span class="linenos">195</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;`&quot;</span><span class="p">]</span> </span><span id="Hive.Tokenizer-196"><a href="#Hive.Tokenizer-196"><span class="linenos">196</span></a> <span class="n">IDENTIFIERS</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;`&quot;</span><span class="p">]</span>
</span><span id="Hive.Tokenizer-196"><a href="#Hive.Tokenizer-196"><span class="linenos">196</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">]</span> </span><span id="Hive.Tokenizer-197"><a href="#Hive.Tokenizer-197"><span class="linenos">197</span></a> <span class="n">STRING_ESCAPES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;</span><span class="se">\\</span><span class="s2">&quot;</span><span class="p">]</span>
</span><span id="Hive.Tokenizer-197"><a href="#Hive.Tokenizer-197"><span class="linenos">197</span></a> <span class="n">ENCODE</span> <span class="o">=</span> <span class="s2">&quot;utf-8&quot;</span> </span><span id="Hive.Tokenizer-198"><a href="#Hive.Tokenizer-198"><span class="linenos">198</span></a> <span class="n">ENCODE</span> <span class="o">=</span> <span class="s2">&quot;utf-8&quot;</span>
</span><span id="Hive.Tokenizer-198"><a href="#Hive.Tokenizer-198"><span class="linenos">198</span></a> </span><span id="Hive.Tokenizer-199"><a href="#Hive.Tokenizer-199"><span class="linenos">199</span></a>
</span><span id="Hive.Tokenizer-199"><a href="#Hive.Tokenizer-199"><span class="linenos">199</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Hive.Tokenizer-200"><a href="#Hive.Tokenizer-200"><span class="linenos">200</span></a> <span class="n">KEYWORDS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Hive.Tokenizer-200"><a href="#Hive.Tokenizer-200"><span class="linenos">200</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="Hive.Tokenizer-201"><a href="#Hive.Tokenizer-201"><span class="linenos">201</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="Hive.Tokenizer-201"><a href="#Hive.Tokenizer-201"><span class="linenos">201</span></a> <span class="s2">&quot;ADD ARCHIVE&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="Hive.Tokenizer-202"><a href="#Hive.Tokenizer-202"><span class="linenos">202</span></a> <span class="s2">&quot;ADD ARCHIVE&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="Hive.Tokenizer-202"><a href="#Hive.Tokenizer-202"><span class="linenos">202</span></a> <span class="s2">&quot;ADD ARCHIVES&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="Hive.Tokenizer-203"><a href="#Hive.Tokenizer-203"><span class="linenos">203</span></a> <span class="s2">&quot;ADD ARCHIVES&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="Hive.Tokenizer-203"><a href="#Hive.Tokenizer-203"><span class="linenos">203</span></a> <span class="s2">&quot;ADD FILE&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="Hive.Tokenizer-204"><a href="#Hive.Tokenizer-204"><span class="linenos">204</span></a> <span class="s2">&quot;ADD FILE&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="Hive.Tokenizer-204"><a href="#Hive.Tokenizer-204"><span class="linenos">204</span></a> <span class="s2">&quot;ADD FILES&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="Hive.Tokenizer-205"><a href="#Hive.Tokenizer-205"><span class="linenos">205</span></a> <span class="s2">&quot;ADD FILES&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="Hive.Tokenizer-205"><a href="#Hive.Tokenizer-205"><span class="linenos">205</span></a> <span class="s2">&quot;ADD JAR&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="Hive.Tokenizer-206"><a href="#Hive.Tokenizer-206"><span class="linenos">206</span></a> <span class="s2">&quot;ADD JAR&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="Hive.Tokenizer-206"><a href="#Hive.Tokenizer-206"><span class="linenos">206</span></a> <span class="s2">&quot;ADD JARS&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="Hive.Tokenizer-207"><a href="#Hive.Tokenizer-207"><span class="linenos">207</span></a> <span class="s2">&quot;ADD JARS&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="Hive.Tokenizer-207"><a href="#Hive.Tokenizer-207"><span class="linenos">207</span></a> <span class="s2">&quot;MSCK REPAIR&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="Hive.Tokenizer-208"><a href="#Hive.Tokenizer-208"><span class="linenos">208</span></a> <span class="s2">&quot;MSCK REPAIR&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="Hive.Tokenizer-208"><a href="#Hive.Tokenizer-208"><span class="linenos">208</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="Hive.Tokenizer-209"><a href="#Hive.Tokenizer-209"><span class="linenos">209</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="Hive.Tokenizer-209"><a href="#Hive.Tokenizer-209"><span class="linenos">209</span></a> <span class="s2">&quot;WITH SERDEPROPERTIES&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERDE_PROPERTIES</span><span class="p">,</span> </span><span id="Hive.Tokenizer-210"><a href="#Hive.Tokenizer-210"><span class="linenos">210</span></a> <span class="s2">&quot;WITH SERDEPROPERTIES&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">SERDE_PROPERTIES</span><span class="p">,</span>
</span><span id="Hive.Tokenizer-210"><a href="#Hive.Tokenizer-210"><span class="linenos">210</span></a> <span class="s2">&quot;TIMESTAMP AS OF&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_SNAPSHOT</span><span class="p">,</span> </span><span id="Hive.Tokenizer-211"><a href="#Hive.Tokenizer-211"><span class="linenos">211</span></a> <span class="s2">&quot;TIMESTAMP AS OF&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">TIMESTAMP_SNAPSHOT</span><span class="p">,</span>
</span><span id="Hive.Tokenizer-211"><a href="#Hive.Tokenizer-211"><span class="linenos">211</span></a> <span class="s2">&quot;VERSION AS OF&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VERSION_SNAPSHOT</span><span class="p">,</span> </span><span id="Hive.Tokenizer-212"><a href="#Hive.Tokenizer-212"><span class="linenos">212</span></a> <span class="s2">&quot;VERSION AS OF&quot;</span><span class="p">:</span> <span class="n">TokenType</span><span class="o">.</span><span class="n">VERSION_SNAPSHOT</span><span class="p">,</span>
</span><span id="Hive.Tokenizer-212"><a href="#Hive.Tokenizer-212"><span class="linenos">212</span></a> <span class="p">}</span> </span><span id="Hive.Tokenizer-213"><a href="#Hive.Tokenizer-213"><span class="linenos">213</span></a> <span class="p">}</span>
</span><span id="Hive.Tokenizer-213"><a href="#Hive.Tokenizer-213"><span class="linenos">213</span></a> </span><span id="Hive.Tokenizer-214"><a href="#Hive.Tokenizer-214"><span class="linenos">214</span></a>
</span><span id="Hive.Tokenizer-214"><a href="#Hive.Tokenizer-214"><span class="linenos">214</span></a> <span class="n">NUMERIC_LITERALS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Hive.Tokenizer-215"><a href="#Hive.Tokenizer-215"><span class="linenos">215</span></a> <span class="n">NUMERIC_LITERALS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Hive.Tokenizer-215"><a href="#Hive.Tokenizer-215"><span class="linenos">215</span></a> <span class="s2">&quot;L&quot;</span><span class="p">:</span> <span class="s2">&quot;BIGINT&quot;</span><span class="p">,</span> </span><span id="Hive.Tokenizer-216"><a href="#Hive.Tokenizer-216"><span class="linenos">216</span></a> <span class="s2">&quot;L&quot;</span><span class="p">:</span> <span class="s2">&quot;BIGINT&quot;</span><span class="p">,</span>
</span><span id="Hive.Tokenizer-216"><a href="#Hive.Tokenizer-216"><span class="linenos">216</span></a> <span class="s2">&quot;S&quot;</span><span class="p">:</span> <span class="s2">&quot;SMALLINT&quot;</span><span class="p">,</span> </span><span id="Hive.Tokenizer-217"><a href="#Hive.Tokenizer-217"><span class="linenos">217</span></a> <span class="s2">&quot;S&quot;</span><span class="p">:</span> <span class="s2">&quot;SMALLINT&quot;</span><span class="p">,</span>
</span><span id="Hive.Tokenizer-217"><a href="#Hive.Tokenizer-217"><span class="linenos">217</span></a> <span class="s2">&quot;Y&quot;</span><span class="p">:</span> <span class="s2">&quot;TINYINT&quot;</span><span class="p">,</span> </span><span id="Hive.Tokenizer-218"><a href="#Hive.Tokenizer-218"><span class="linenos">218</span></a> <span class="s2">&quot;Y&quot;</span><span class="p">:</span> <span class="s2">&quot;TINYINT&quot;</span><span class="p">,</span>
</span><span id="Hive.Tokenizer-218"><a href="#Hive.Tokenizer-218"><span class="linenos">218</span></a> <span class="s2">&quot;D&quot;</span><span class="p">:</span> <span class="s2">&quot;DOUBLE&quot;</span><span class="p">,</span> </span><span id="Hive.Tokenizer-219"><a href="#Hive.Tokenizer-219"><span class="linenos">219</span></a> <span class="s2">&quot;D&quot;</span><span class="p">:</span> <span class="s2">&quot;DOUBLE&quot;</span><span class="p">,</span>
</span><span id="Hive.Tokenizer-219"><a href="#Hive.Tokenizer-219"><span class="linenos">219</span></a> <span class="s2">&quot;F&quot;</span><span class="p">:</span> <span class="s2">&quot;FLOAT&quot;</span><span class="p">,</span> </span><span id="Hive.Tokenizer-220"><a href="#Hive.Tokenizer-220"><span class="linenos">220</span></a> <span class="s2">&quot;F&quot;</span><span class="p">:</span> <span class="s2">&quot;FLOAT&quot;</span><span class="p">,</span>
</span><span id="Hive.Tokenizer-220"><a href="#Hive.Tokenizer-220"><span class="linenos">220</span></a> <span class="s2">&quot;BD&quot;</span><span class="p">:</span> <span class="s2">&quot;DECIMAL&quot;</span><span class="p">,</span> </span><span id="Hive.Tokenizer-221"><a href="#Hive.Tokenizer-221"><span class="linenos">221</span></a> <span class="s2">&quot;BD&quot;</span><span class="p">:</span> <span class="s2">&quot;DECIMAL&quot;</span><span class="p">,</span>
</span><span id="Hive.Tokenizer-221"><a href="#Hive.Tokenizer-221"><span class="linenos">221</span></a> <span class="p">}</span> </span><span id="Hive.Tokenizer-222"><a href="#Hive.Tokenizer-222"><span class="linenos">222</span></a> <span class="p">}</span>
</span></pre></div> </span></pre></div>
@ -1741,10 +1756,9 @@
</div> </div>
<a class="headerlink" href="#Hive.Parser"></a> <a class="headerlink" href="#Hive.Parser"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Hive.Parser-223"><a href="#Hive.Parser-223"><span class="linenos">223</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> <div class="pdoc-code codehilite"><pre><span></span><span id="Hive.Parser-224"><a href="#Hive.Parser-224"><span class="linenos">224</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="Hive.Parser-224"><a href="#Hive.Parser-224"><span class="linenos">224</span></a> <span class="n">LOG_DEFAULTS_TO_LN</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="Hive.Parser-225"><a href="#Hive.Parser-225"><span class="linenos">225</span></a> <span class="n">LOG_DEFAULTS_TO_LN</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Hive.Parser-225"><a href="#Hive.Parser-225"><span class="linenos">225</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="Hive.Parser-226"><a href="#Hive.Parser-226"><span class="linenos">226</span></a> <span class="n">STRICT_CAST</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Hive.Parser-226"><a href="#Hive.Parser-226"><span class="linenos">226</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Hive.Parser-227"><a href="#Hive.Parser-227"><span class="linenos">227</span></a> </span><span id="Hive.Parser-227"><a href="#Hive.Parser-227"><span class="linenos">227</span></a>
</span><span id="Hive.Parser-228"><a href="#Hive.Parser-228"><span class="linenos">228</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Hive.Parser-228"><a href="#Hive.Parser-228"><span class="linenos">228</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Hive.Parser-229"><a href="#Hive.Parser-229"><span class="linenos">229</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="Hive.Parser-229"><a href="#Hive.Parser-229"><span class="linenos">229</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>
@ -1929,18 +1943,6 @@ Default: 3</li>
</div>
<div id="Hive.Parser.SUPPORTS_USER_DEFINED_TYPES" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_USER_DEFINED_TYPES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Hive.Parser.SUPPORTS_USER_DEFINED_TYPES"></a>
</div> </div>
<div id="Hive.Parser.FUNCTIONS" class="classattr"> <div id="Hive.Parser.FUNCTIONS" class="classattr">
<div class="attr variable"> <div class="attr variable">
@ -2004,6 +2006,18 @@ Default: 3</li>
</div>
<div id="Hive.Parser.SUPPORTS_USER_DEFINED_TYPES" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_USER_DEFINED_TYPES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Hive.Parser.SUPPORTS_USER_DEFINED_TYPES"></a>
</div> </div>
<div id="Hive.Parser.SHOW_TRIE" class="classattr"> <div id="Hive.Parser.SHOW_TRIE" class="classattr">
<div class="attr variable"> <div class="attr variable">
@ -2132,6 +2146,7 @@ Default: 3</li>
<dd id="Hive.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd> <dd id="Hive.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd>
<dd id="Hive.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd> <dd id="Hive.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd>
<dd id="Hive.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd> <dd id="Hive.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd>
<dd id="Hive.Parser.FETCH_TOKENS" class="variable"><a href="../parser.html#Parser.FETCH_TOKENS">FETCH_TOKENS</a></dd>
<dd id="Hive.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd> <dd id="Hive.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd>
<dd id="Hive.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd> <dd id="Hive.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd>
<dd id="Hive.Parser.CONCAT_NULL_OUTPUTS_STRING" class="variable"><a href="../parser.html#Parser.CONCAT_NULL_OUTPUTS_STRING">CONCAT_NULL_OUTPUTS_STRING</a></dd> <dd id="Hive.Parser.CONCAT_NULL_OUTPUTS_STRING" class="variable"><a href="../parser.html#Parser.CONCAT_NULL_OUTPUTS_STRING">CONCAT_NULL_OUTPUTS_STRING</a></dd>
@ -2697,26 +2712,26 @@ Default: True</li>
</div> </div>
<a class="headerlink" href="#Hive.Generator.can_identify"></a> <a class="headerlink" href="#Hive.Generator.can_identify"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Hive.Generator.can_identify-257"><a href="#Hive.Generator.can_identify-257"><span class="linenos">257</span></a> <span class="nd">@classmethod</span> <div class="pdoc-code codehilite"><pre><span></span><span id="Hive.Generator.can_identify-260"><a href="#Hive.Generator.can_identify-260"><span class="linenos">260</span></a> <span class="nd">@classmethod</span>
</span><span id="Hive.Generator.can_identify-258"><a href="#Hive.Generator.can_identify-258"><span class="linenos">258</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="Hive.Generator.can_identify-261"><a href="#Hive.Generator.can_identify-261"><span class="linenos">261</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="Hive.Generator.can_identify-259"><a href="#Hive.Generator.can_identify-259"><span class="linenos">259</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="Hive.Generator.can_identify-262"><a href="#Hive.Generator.can_identify-262"><span class="linenos">262</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="Hive.Generator.can_identify-260"><a href="#Hive.Generator.can_identify-260"><span class="linenos">260</span></a> </span><span id="Hive.Generator.can_identify-263"><a href="#Hive.Generator.can_identify-263"><span class="linenos">263</span></a>
</span><span id="Hive.Generator.can_identify-261"><a href="#Hive.Generator.can_identify-261"><span class="linenos">261</span></a><span class="sd"> Args:</span> </span><span id="Hive.Generator.can_identify-264"><a href="#Hive.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> Args:</span>
</span><span id="Hive.Generator.can_identify-262"><a href="#Hive.Generator.can_identify-262"><span class="linenos">262</span></a><span class="sd"> text: The text to check.</span> </span><span id="Hive.Generator.can_identify-265"><a href="#Hive.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> text: The text to check.</span>
</span><span id="Hive.Generator.can_identify-263"><a href="#Hive.Generator.can_identify-263"><span class="linenos">263</span></a><span class="sd"> identify:</span> </span><span id="Hive.Generator.can_identify-266"><a href="#Hive.Generator.can_identify-266"><span class="linenos">266</span></a><span class="sd"> identify:</span>
</span><span id="Hive.Generator.can_identify-264"><a href="#Hive.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span> </span><span id="Hive.Generator.can_identify-267"><a href="#Hive.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span>
</span><span id="Hive.Generator.can_identify-265"><a href="#Hive.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span> </span><span id="Hive.Generator.can_identify-268"><a href="#Hive.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span>
</span><span id="Hive.Generator.can_identify-266"><a href="#Hive.Generator.can_identify-266"><span class="linenos">266</span></a> </span><span id="Hive.Generator.can_identify-269"><a href="#Hive.Generator.can_identify-269"><span class="linenos">269</span></a>
</span><span id="Hive.Generator.can_identify-267"><a href="#Hive.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> Returns:</span> </span><span id="Hive.Generator.can_identify-270"><a href="#Hive.Generator.can_identify-270"><span class="linenos">270</span></a><span class="sd"> Returns:</span>
</span><span id="Hive.Generator.can_identify-268"><a href="#Hive.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> Whether or not the given text can be identified.</span> </span><span id="Hive.Generator.can_identify-271"><a href="#Hive.Generator.can_identify-271"><span class="linenos">271</span></a><span class="sd"> Whether or not the given text can be identified.</span>
</span><span id="Hive.Generator.can_identify-269"><a href="#Hive.Generator.can_identify-269"><span class="linenos">269</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="Hive.Generator.can_identify-272"><a href="#Hive.Generator.can_identify-272"><span class="linenos">272</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Hive.Generator.can_identify-270"><a href="#Hive.Generator.can_identify-270"><span class="linenos">270</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="Hive.Generator.can_identify-273"><a href="#Hive.Generator.can_identify-273"><span class="linenos">273</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="Hive.Generator.can_identify-271"><a href="#Hive.Generator.can_identify-271"><span class="linenos">271</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="Hive.Generator.can_identify-274"><a href="#Hive.Generator.can_identify-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="kc">True</span>
</span><span id="Hive.Generator.can_identify-272"><a href="#Hive.Generator.can_identify-272"><span class="linenos">272</span></a>
</span><span id="Hive.Generator.can_identify-273"><a href="#Hive.Generator.can_identify-273"><span class="linenos">273</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="Hive.Generator.can_identify-274"><a href="#Hive.Generator.can_identify-274"><span class="linenos">274</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="Hive.Generator.can_identify-275"><a href="#Hive.Generator.can_identify-275"><span class="linenos">275</span></a> </span><span id="Hive.Generator.can_identify-275"><a href="#Hive.Generator.can_identify-275"><span class="linenos">275</span></a>
</span><span id="Hive.Generator.can_identify-276"><a href="#Hive.Generator.can_identify-276"><span class="linenos">276</span></a> <span class="k">return</span> <span class="kc">False</span> </span><span id="Hive.Generator.can_identify-276"><a href="#Hive.Generator.can_identify-276"><span class="linenos">276</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="Hive.Generator.can_identify-277"><a href="#Hive.Generator.can_identify-277"><span class="linenos">277</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="Hive.Generator.can_identify-278"><a href="#Hive.Generator.can_identify-278"><span class="linenos">278</span></a>
</span><span id="Hive.Generator.can_identify-279"><a href="#Hive.Generator.can_identify-279"><span class="linenos">279</span></a> <span class="k">return</span> <span class="kc">False</span>
</span></pre></div> </span></pre></div>

File diff suppressed because one or more lines are too long

View file

@ -955,6 +955,7 @@
<dd id="Oracle.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="dialect.html#Dialect.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd> <dd id="Oracle.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="dialect.html#Dialect.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd>
<dd id="Oracle.DPIPE_IS_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.DPIPE_IS_STRING_CONCAT">DPIPE_IS_STRING_CONCAT</a></dd> <dd id="Oracle.DPIPE_IS_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.DPIPE_IS_STRING_CONCAT">DPIPE_IS_STRING_CONCAT</a></dd>
<dd id="Oracle.STRICT_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd> <dd id="Oracle.STRICT_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd>
<dd id="Oracle.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="dialect.html#Dialect.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Oracle.NORMALIZE_FUNCTIONS" class="variable"><a href="dialect.html#Dialect.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd> <dd id="Oracle.NORMALIZE_FUNCTIONS" class="variable"><a href="dialect.html#Dialect.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd>
<dd id="Oracle.NULL_ORDERING" class="variable"><a href="dialect.html#Dialect.NULL_ORDERING">NULL_ORDERING</a></dd> <dd id="Oracle.NULL_ORDERING" class="variable"><a href="dialect.html#Dialect.NULL_ORDERING">NULL_ORDERING</a></dd>
<dd id="Oracle.DATE_FORMAT" class="variable"><a href="dialect.html#Dialect.DATE_FORMAT">DATE_FORMAT</a></dd> <dd id="Oracle.DATE_FORMAT" class="variable"><a href="dialect.html#Dialect.DATE_FORMAT">DATE_FORMAT</a></dd>
@ -1308,6 +1309,7 @@ Default: 3</li>
<dd id="Oracle.Parser.TABLE_INDEX_HINT_TOKENS" class="variable"><a href="../parser.html#Parser.TABLE_INDEX_HINT_TOKENS">TABLE_INDEX_HINT_TOKENS</a></dd> <dd id="Oracle.Parser.TABLE_INDEX_HINT_TOKENS" class="variable"><a href="../parser.html#Parser.TABLE_INDEX_HINT_TOKENS">TABLE_INDEX_HINT_TOKENS</a></dd>
<dd id="Oracle.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd> <dd id="Oracle.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd>
<dd id="Oracle.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd> <dd id="Oracle.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd>
<dd id="Oracle.Parser.FETCH_TOKENS" class="variable"><a href="../parser.html#Parser.FETCH_TOKENS">FETCH_TOKENS</a></dd>
<dd id="Oracle.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd> <dd id="Oracle.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd>
<dd id="Oracle.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd> <dd id="Oracle.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd>
<dd id="Oracle.Parser.CONCAT_NULL_OUTPUTS_STRING" class="variable"><a href="../parser.html#Parser.CONCAT_NULL_OUTPUTS_STRING">CONCAT_NULL_OUTPUTS_STRING</a></dd> <dd id="Oracle.Parser.CONCAT_NULL_OUTPUTS_STRING" class="variable"><a href="../parser.html#Parser.CONCAT_NULL_OUTPUTS_STRING">CONCAT_NULL_OUTPUTS_STRING</a></dd>
@ -1315,12 +1317,12 @@ Default: 3</li>
<dd id="Oracle.Parser.IDENTIFY_PIVOT_STRINGS" class="variable"><a href="../parser.html#Parser.IDENTIFY_PIVOT_STRINGS">IDENTIFY_PIVOT_STRINGS</a></dd> <dd id="Oracle.Parser.IDENTIFY_PIVOT_STRINGS" class="variable"><a href="../parser.html#Parser.IDENTIFY_PIVOT_STRINGS">IDENTIFY_PIVOT_STRINGS</a></dd>
<dd id="Oracle.Parser.LOG_BASE_FIRST" class="variable"><a href="../parser.html#Parser.LOG_BASE_FIRST">LOG_BASE_FIRST</a></dd> <dd id="Oracle.Parser.LOG_BASE_FIRST" class="variable"><a href="../parser.html#Parser.LOG_BASE_FIRST">LOG_BASE_FIRST</a></dd>
<dd id="Oracle.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="../parser.html#Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd> <dd id="Oracle.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="../parser.html#Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd>
<dd id="Oracle.Parser.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="../parser.html#Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Oracle.Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD" class="variable"><a href="../parser.html#Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD">ALTER_TABLE_ADD_COLUMN_KEYWORD</a></dd> <dd id="Oracle.Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD" class="variable"><a href="../parser.html#Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD">ALTER_TABLE_ADD_COLUMN_KEYWORD</a></dd>
<dd id="Oracle.Parser.TABLESAMPLE_CSV" class="variable"><a href="../parser.html#Parser.TABLESAMPLE_CSV">TABLESAMPLE_CSV</a></dd> <dd id="Oracle.Parser.TABLESAMPLE_CSV" class="variable"><a href="../parser.html#Parser.TABLESAMPLE_CSV">TABLESAMPLE_CSV</a></dd>
<dd id="Oracle.Parser.INDEX_OFFSET" class="variable"><a href="../parser.html#Parser.INDEX_OFFSET">INDEX_OFFSET</a></dd> <dd id="Oracle.Parser.INDEX_OFFSET" class="variable"><a href="../parser.html#Parser.INDEX_OFFSET">INDEX_OFFSET</a></dd>
<dd id="Oracle.Parser.UNNEST_COLUMN_ONLY" class="variable"><a href="../parser.html#Parser.UNNEST_COLUMN_ONLY">UNNEST_COLUMN_ONLY</a></dd> <dd id="Oracle.Parser.UNNEST_COLUMN_ONLY" class="variable"><a href="../parser.html#Parser.UNNEST_COLUMN_ONLY">UNNEST_COLUMN_ONLY</a></dd>
<dd id="Oracle.Parser.STRICT_STRING_CONCAT" class="variable"><a href="../parser.html#Parser.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd> <dd id="Oracle.Parser.STRICT_STRING_CONCAT" class="variable"><a href="../parser.html#Parser.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd>
<dd id="Oracle.Parser.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="../parser.html#Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Oracle.Parser.NORMALIZE_FUNCTIONS" class="variable"><a href="../parser.html#Parser.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd> <dd id="Oracle.Parser.NORMALIZE_FUNCTIONS" class="variable"><a href="../parser.html#Parser.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd>
<dd id="Oracle.Parser.NULL_ORDERING" class="variable"><a href="../parser.html#Parser.NULL_ORDERING">NULL_ORDERING</a></dd> <dd id="Oracle.Parser.NULL_ORDERING" class="variable"><a href="../parser.html#Parser.NULL_ORDERING">NULL_ORDERING</a></dd>
<dd id="Oracle.Parser.FORMAT_MAPPING" class="variable"><a href="../parser.html#Parser.FORMAT_MAPPING">FORMAT_MAPPING</a></dd> <dd id="Oracle.Parser.FORMAT_MAPPING" class="variable"><a href="../parser.html#Parser.FORMAT_MAPPING">FORMAT_MAPPING</a></dd>
@ -1662,26 +1664,26 @@ Default: True</li>
</div> </div>
<a class="headerlink" href="#Oracle.Generator.can_identify"></a> <a class="headerlink" href="#Oracle.Generator.can_identify"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Oracle.Generator.can_identify-257"><a href="#Oracle.Generator.can_identify-257"><span class="linenos">257</span></a> <span class="nd">@classmethod</span> <div class="pdoc-code codehilite"><pre><span></span><span id="Oracle.Generator.can_identify-260"><a href="#Oracle.Generator.can_identify-260"><span class="linenos">260</span></a> <span class="nd">@classmethod</span>
</span><span id="Oracle.Generator.can_identify-258"><a href="#Oracle.Generator.can_identify-258"><span class="linenos">258</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="Oracle.Generator.can_identify-261"><a href="#Oracle.Generator.can_identify-261"><span class="linenos">261</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="Oracle.Generator.can_identify-259"><a href="#Oracle.Generator.can_identify-259"><span class="linenos">259</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="Oracle.Generator.can_identify-262"><a href="#Oracle.Generator.can_identify-262"><span class="linenos">262</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="Oracle.Generator.can_identify-260"><a href="#Oracle.Generator.can_identify-260"><span class="linenos">260</span></a> </span><span id="Oracle.Generator.can_identify-263"><a href="#Oracle.Generator.can_identify-263"><span class="linenos">263</span></a>
</span><span id="Oracle.Generator.can_identify-261"><a href="#Oracle.Generator.can_identify-261"><span class="linenos">261</span></a><span class="sd"> Args:</span> </span><span id="Oracle.Generator.can_identify-264"><a href="#Oracle.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> Args:</span>
</span><span id="Oracle.Generator.can_identify-262"><a href="#Oracle.Generator.can_identify-262"><span class="linenos">262</span></a><span class="sd"> text: The text to check.</span> </span><span id="Oracle.Generator.can_identify-265"><a href="#Oracle.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> text: The text to check.</span>
</span><span id="Oracle.Generator.can_identify-263"><a href="#Oracle.Generator.can_identify-263"><span class="linenos">263</span></a><span class="sd"> identify:</span> </span><span id="Oracle.Generator.can_identify-266"><a href="#Oracle.Generator.can_identify-266"><span class="linenos">266</span></a><span class="sd"> identify:</span>
</span><span id="Oracle.Generator.can_identify-264"><a href="#Oracle.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span> </span><span id="Oracle.Generator.can_identify-267"><a href="#Oracle.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span>
</span><span id="Oracle.Generator.can_identify-265"><a href="#Oracle.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span> </span><span id="Oracle.Generator.can_identify-268"><a href="#Oracle.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span>
</span><span id="Oracle.Generator.can_identify-266"><a href="#Oracle.Generator.can_identify-266"><span class="linenos">266</span></a> </span><span id="Oracle.Generator.can_identify-269"><a href="#Oracle.Generator.can_identify-269"><span class="linenos">269</span></a>
</span><span id="Oracle.Generator.can_identify-267"><a href="#Oracle.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> Returns:</span> </span><span id="Oracle.Generator.can_identify-270"><a href="#Oracle.Generator.can_identify-270"><span class="linenos">270</span></a><span class="sd"> Returns:</span>
</span><span id="Oracle.Generator.can_identify-268"><a href="#Oracle.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> Whether or not the given text can be identified.</span> </span><span id="Oracle.Generator.can_identify-271"><a href="#Oracle.Generator.can_identify-271"><span class="linenos">271</span></a><span class="sd"> Whether or not the given text can be identified.</span>
</span><span id="Oracle.Generator.can_identify-269"><a href="#Oracle.Generator.can_identify-269"><span class="linenos">269</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="Oracle.Generator.can_identify-272"><a href="#Oracle.Generator.can_identify-272"><span class="linenos">272</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Oracle.Generator.can_identify-270"><a href="#Oracle.Generator.can_identify-270"><span class="linenos">270</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="Oracle.Generator.can_identify-273"><a href="#Oracle.Generator.can_identify-273"><span class="linenos">273</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="Oracle.Generator.can_identify-271"><a href="#Oracle.Generator.can_identify-271"><span class="linenos">271</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="Oracle.Generator.can_identify-274"><a href="#Oracle.Generator.can_identify-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="kc">True</span>
</span><span id="Oracle.Generator.can_identify-272"><a href="#Oracle.Generator.can_identify-272"><span class="linenos">272</span></a>
</span><span id="Oracle.Generator.can_identify-273"><a href="#Oracle.Generator.can_identify-273"><span class="linenos">273</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="Oracle.Generator.can_identify-274"><a href="#Oracle.Generator.can_identify-274"><span class="linenos">274</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="Oracle.Generator.can_identify-275"><a href="#Oracle.Generator.can_identify-275"><span class="linenos">275</span></a> </span><span id="Oracle.Generator.can_identify-275"><a href="#Oracle.Generator.can_identify-275"><span class="linenos">275</span></a>
</span><span id="Oracle.Generator.can_identify-276"><a href="#Oracle.Generator.can_identify-276"><span class="linenos">276</span></a> <span class="k">return</span> <span class="kc">False</span> </span><span id="Oracle.Generator.can_identify-276"><a href="#Oracle.Generator.can_identify-276"><span class="linenos">276</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="Oracle.Generator.can_identify-277"><a href="#Oracle.Generator.can_identify-277"><span class="linenos">277</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="Oracle.Generator.can_identify-278"><a href="#Oracle.Generator.can_identify-278"><span class="linenos">278</span></a>
</span><span id="Oracle.Generator.can_identify-279"><a href="#Oracle.Generator.can_identify-279"><span class="linenos">279</span></a> <span class="k">return</span> <span class="kc">False</span>
</span></pre></div> </span></pre></div>

View file

@ -1278,6 +1278,7 @@
<dd id="Postgres.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="dialect.html#Dialect.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd> <dd id="Postgres.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="dialect.html#Dialect.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd>
<dd id="Postgres.DPIPE_IS_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.DPIPE_IS_STRING_CONCAT">DPIPE_IS_STRING_CONCAT</a></dd> <dd id="Postgres.DPIPE_IS_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.DPIPE_IS_STRING_CONCAT">DPIPE_IS_STRING_CONCAT</a></dd>
<dd id="Postgres.STRICT_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd> <dd id="Postgres.STRICT_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd>
<dd id="Postgres.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="dialect.html#Dialect.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Postgres.NORMALIZE_FUNCTIONS" class="variable"><a href="dialect.html#Dialect.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd> <dd id="Postgres.NORMALIZE_FUNCTIONS" class="variable"><a href="dialect.html#Dialect.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd>
<dd id="Postgres.DATE_FORMAT" class="variable"><a href="dialect.html#Dialect.DATE_FORMAT">DATE_FORMAT</a></dd> <dd id="Postgres.DATE_FORMAT" class="variable"><a href="dialect.html#Dialect.DATE_FORMAT">DATE_FORMAT</a></dd>
<dd id="Postgres.DATEINT_FORMAT" class="variable"><a href="dialect.html#Dialect.DATEINT_FORMAT">DATEINT_FORMAT</a></dd> <dd id="Postgres.DATEINT_FORMAT" class="variable"><a href="dialect.html#Dialect.DATEINT_FORMAT">DATEINT_FORMAT</a></dd>
@ -1821,6 +1822,7 @@ Default: 3</li>
<dd id="Postgres.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd> <dd id="Postgres.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd>
<dd id="Postgres.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd> <dd id="Postgres.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd>
<dd id="Postgres.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd> <dd id="Postgres.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd>
<dd id="Postgres.Parser.FETCH_TOKENS" class="variable"><a href="../parser.html#Parser.FETCH_TOKENS">FETCH_TOKENS</a></dd>
<dd id="Postgres.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd> <dd id="Postgres.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd>
<dd id="Postgres.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd> <dd id="Postgres.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd>
<dd id="Postgres.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd> <dd id="Postgres.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd>
@ -1828,12 +1830,12 @@ Default: 3</li>
<dd id="Postgres.Parser.IDENTIFY_PIVOT_STRINGS" class="variable"><a href="../parser.html#Parser.IDENTIFY_PIVOT_STRINGS">IDENTIFY_PIVOT_STRINGS</a></dd> <dd id="Postgres.Parser.IDENTIFY_PIVOT_STRINGS" class="variable"><a href="../parser.html#Parser.IDENTIFY_PIVOT_STRINGS">IDENTIFY_PIVOT_STRINGS</a></dd>
<dd id="Postgres.Parser.LOG_BASE_FIRST" class="variable"><a href="../parser.html#Parser.LOG_BASE_FIRST">LOG_BASE_FIRST</a></dd> <dd id="Postgres.Parser.LOG_BASE_FIRST" class="variable"><a href="../parser.html#Parser.LOG_BASE_FIRST">LOG_BASE_FIRST</a></dd>
<dd id="Postgres.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="../parser.html#Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd> <dd id="Postgres.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="../parser.html#Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd>
<dd id="Postgres.Parser.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="../parser.html#Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Postgres.Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD" class="variable"><a href="../parser.html#Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD">ALTER_TABLE_ADD_COLUMN_KEYWORD</a></dd> <dd id="Postgres.Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD" class="variable"><a href="../parser.html#Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD">ALTER_TABLE_ADD_COLUMN_KEYWORD</a></dd>
<dd id="Postgres.Parser.TABLESAMPLE_CSV" class="variable"><a href="../parser.html#Parser.TABLESAMPLE_CSV">TABLESAMPLE_CSV</a></dd> <dd id="Postgres.Parser.TABLESAMPLE_CSV" class="variable"><a href="../parser.html#Parser.TABLESAMPLE_CSV">TABLESAMPLE_CSV</a></dd>
<dd id="Postgres.Parser.UNNEST_COLUMN_ONLY" class="variable"><a href="../parser.html#Parser.UNNEST_COLUMN_ONLY">UNNEST_COLUMN_ONLY</a></dd> <dd id="Postgres.Parser.UNNEST_COLUMN_ONLY" class="variable"><a href="../parser.html#Parser.UNNEST_COLUMN_ONLY">UNNEST_COLUMN_ONLY</a></dd>
<dd id="Postgres.Parser.ALIAS_POST_TABLESAMPLE" class="variable"><a href="../parser.html#Parser.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd> <dd id="Postgres.Parser.ALIAS_POST_TABLESAMPLE" class="variable"><a href="../parser.html#Parser.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd>
<dd id="Postgres.Parser.STRICT_STRING_CONCAT" class="variable"><a href="../parser.html#Parser.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd> <dd id="Postgres.Parser.STRICT_STRING_CONCAT" class="variable"><a href="../parser.html#Parser.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd>
<dd id="Postgres.Parser.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="../parser.html#Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Postgres.Parser.NORMALIZE_FUNCTIONS" class="variable"><a href="../parser.html#Parser.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd> <dd id="Postgres.Parser.NORMALIZE_FUNCTIONS" class="variable"><a href="../parser.html#Parser.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd>
<dd id="Postgres.Parser.FORMAT_MAPPING" class="variable"><a href="../parser.html#Parser.FORMAT_MAPPING">FORMAT_MAPPING</a></dd> <dd id="Postgres.Parser.FORMAT_MAPPING" class="variable"><a href="../parser.html#Parser.FORMAT_MAPPING">FORMAT_MAPPING</a></dd>
<dd id="Postgres.Parser.error_level" class="variable"><a href="../parser.html#Parser.error_level">error_level</a></dd> <dd id="Postgres.Parser.error_level" class="variable"><a href="../parser.html#Parser.error_level">error_level</a></dd>
@ -2239,26 +2241,26 @@ Default: True</li>
</div> </div>
<a class="headerlink" href="#Postgres.Generator.can_identify"></a> <a class="headerlink" href="#Postgres.Generator.can_identify"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator.can_identify-257"><a href="#Postgres.Generator.can_identify-257"><span class="linenos">257</span></a> <span class="nd">@classmethod</span> <div class="pdoc-code codehilite"><pre><span></span><span id="Postgres.Generator.can_identify-260"><a href="#Postgres.Generator.can_identify-260"><span class="linenos">260</span></a> <span class="nd">@classmethod</span>
</span><span id="Postgres.Generator.can_identify-258"><a href="#Postgres.Generator.can_identify-258"><span class="linenos">258</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-261"><a href="#Postgres.Generator.can_identify-261"><span class="linenos">261</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-259"><a href="#Postgres.Generator.can_identify-259"><span class="linenos">259</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-262"><a href="#Postgres.Generator.can_identify-262"><span class="linenos">262</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-260"><a href="#Postgres.Generator.can_identify-260"><span class="linenos">260</span></a> </span><span id="Postgres.Generator.can_identify-263"><a href="#Postgres.Generator.can_identify-263"><span class="linenos">263</span></a>
</span><span id="Postgres.Generator.can_identify-261"><a href="#Postgres.Generator.can_identify-261"><span class="linenos">261</span></a><span class="sd"> Args:</span> </span><span id="Postgres.Generator.can_identify-264"><a href="#Postgres.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> Args:</span>
</span><span id="Postgres.Generator.can_identify-262"><a href="#Postgres.Generator.can_identify-262"><span class="linenos">262</span></a><span class="sd"> text: The text to check.</span> </span><span id="Postgres.Generator.can_identify-265"><a href="#Postgres.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> text: The text to check.</span>
</span><span id="Postgres.Generator.can_identify-263"><a href="#Postgres.Generator.can_identify-263"><span class="linenos">263</span></a><span class="sd"> identify:</span> </span><span id="Postgres.Generator.can_identify-266"><a href="#Postgres.Generator.can_identify-266"><span class="linenos">266</span></a><span class="sd"> identify:</span>
</span><span id="Postgres.Generator.can_identify-264"><a href="#Postgres.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span> </span><span id="Postgres.Generator.can_identify-267"><a href="#Postgres.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span>
</span><span id="Postgres.Generator.can_identify-265"><a href="#Postgres.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span> </span><span id="Postgres.Generator.can_identify-268"><a href="#Postgres.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span>
</span><span id="Postgres.Generator.can_identify-266"><a href="#Postgres.Generator.can_identify-266"><span class="linenos">266</span></a> </span><span id="Postgres.Generator.can_identify-269"><a href="#Postgres.Generator.can_identify-269"><span class="linenos">269</span></a>
</span><span id="Postgres.Generator.can_identify-267"><a href="#Postgres.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> Returns:</span> </span><span id="Postgres.Generator.can_identify-270"><a href="#Postgres.Generator.can_identify-270"><span class="linenos">270</span></a><span class="sd"> Returns:</span>
</span><span id="Postgres.Generator.can_identify-268"><a href="#Postgres.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> Whether or not the given text can be identified.</span> </span><span id="Postgres.Generator.can_identify-271"><a href="#Postgres.Generator.can_identify-271"><span class="linenos">271</span></a><span class="sd"> Whether or not the given text can be identified.</span>
</span><span id="Postgres.Generator.can_identify-269"><a href="#Postgres.Generator.can_identify-269"><span class="linenos">269</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="Postgres.Generator.can_identify-272"><a href="#Postgres.Generator.can_identify-272"><span class="linenos">272</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Postgres.Generator.can_identify-270"><a href="#Postgres.Generator.can_identify-270"><span class="linenos">270</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-273"><a href="#Postgres.Generator.can_identify-273"><span class="linenos">273</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-271"><a href="#Postgres.Generator.can_identify-271"><span class="linenos">271</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="Postgres.Generator.can_identify-274"><a href="#Postgres.Generator.can_identify-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="kc">True</span>
</span><span id="Postgres.Generator.can_identify-272"><a href="#Postgres.Generator.can_identify-272"><span class="linenos">272</span></a>
</span><span id="Postgres.Generator.can_identify-273"><a href="#Postgres.Generator.can_identify-273"><span class="linenos">273</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-274"><a href="#Postgres.Generator.can_identify-274"><span class="linenos">274</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-275"><a href="#Postgres.Generator.can_identify-275"><span class="linenos">275</span></a> </span><span id="Postgres.Generator.can_identify-275"><a href="#Postgres.Generator.can_identify-275"><span class="linenos">275</span></a>
</span><span id="Postgres.Generator.can_identify-276"><a href="#Postgres.Generator.can_identify-276"><span class="linenos">276</span></a> <span class="k">return</span> <span class="kc">False</span> </span><span id="Postgres.Generator.can_identify-276"><a href="#Postgres.Generator.can_identify-276"><span class="linenos">276</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-277"><a href="#Postgres.Generator.can_identify-277"><span class="linenos">277</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-278"><a href="#Postgres.Generator.can_identify-278"><span class="linenos">278</span></a>
</span><span id="Postgres.Generator.can_identify-279"><a href="#Postgres.Generator.can_identify-279"><span class="linenos">279</span></a> <span class="k">return</span> <span class="kc">False</span>
</span></pre></div> </span></pre></div>

View file

@ -78,6 +78,9 @@
<li> <li>
<a class="variable" href="#Presto.Parser.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a> <a class="variable" href="#Presto.Parser.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a>
</li> </li>
<li>
<a class="variable" href="#Presto.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a>
</li>
<li> <li>
<a class="variable" href="#Presto.Parser.NULL_ORDERING">NULL_ORDERING</a> <a class="variable" href="#Presto.Parser.NULL_ORDERING">NULL_ORDERING</a>
</li> </li>
@ -1229,6 +1232,7 @@
<dd id="Presto.ALIAS_POST_TABLESAMPLE" class="variable"><a href="dialect.html#Dialect.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd> <dd id="Presto.ALIAS_POST_TABLESAMPLE" class="variable"><a href="dialect.html#Dialect.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd>
<dd id="Presto.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="dialect.html#Dialect.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd> <dd id="Presto.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="dialect.html#Dialect.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd>
<dd id="Presto.DPIPE_IS_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.DPIPE_IS_STRING_CONCAT">DPIPE_IS_STRING_CONCAT</a></dd> <dd id="Presto.DPIPE_IS_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.DPIPE_IS_STRING_CONCAT">DPIPE_IS_STRING_CONCAT</a></dd>
<dd id="Presto.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="dialect.html#Dialect.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Presto.NORMALIZE_FUNCTIONS" class="variable"><a href="dialect.html#Dialect.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd> <dd id="Presto.NORMALIZE_FUNCTIONS" class="variable"><a href="dialect.html#Dialect.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd>
<dd id="Presto.DATE_FORMAT" class="variable"><a href="dialect.html#Dialect.DATE_FORMAT">DATE_FORMAT</a></dd> <dd id="Presto.DATE_FORMAT" class="variable"><a href="dialect.html#Dialect.DATE_FORMAT">DATE_FORMAT</a></dd>
<dd id="Presto.DATEINT_FORMAT" class="variable"><a href="dialect.html#Dialect.DATEINT_FORMAT">DATEINT_FORMAT</a></dd> <dd id="Presto.DATEINT_FORMAT" class="variable"><a href="dialect.html#Dialect.DATEINT_FORMAT">DATEINT_FORMAT</a></dd>
@ -1433,7 +1437,7 @@ Default: 3</li>
<div id="Presto.Parser.TOKENIZER_CLASS" class="classattr"> <div id="Presto.Parser.TOKENIZER_CLASS" class="classattr">
<div class="attr variable"> <div class="attr variable">
<span class="name">TOKENIZER_CLASS</span><span class="annotation">: Type[<a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a>]</span> = <span class="name">TOKENIZER_CLASS</span><span class="annotation">: Type[<a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a>]</span> =
<span class="default_value">&lt;class &#39;<a href="#Presto.Tokenizer">Presto.Tokenizer</a>&#39;&gt;</span> <span class="default_value">&lt;class &#39;<a href="trino.html#Trino.Tokenizer">sqlglot.dialects.trino.Trino.Tokenizer</a>&#39;&gt;</span>
</div> </div>
@ -1465,6 +1469,18 @@ Default: 3</li>
</div>
<div id="Presto.Parser.SUPPORTS_USER_DEFINED_TYPES" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_USER_DEFINED_TYPES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Presto.Parser.SUPPORTS_USER_DEFINED_TYPES"></a>
</div> </div>
<div id="Presto.Parser.NULL_ORDERING" class="classattr"> <div id="Presto.Parser.NULL_ORDERING" class="classattr">
<div class="attr variable"> <div class="attr variable">
@ -1606,6 +1622,7 @@ Default: 3</li>
<dd id="Presto.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd> <dd id="Presto.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd>
<dd id="Presto.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd> <dd id="Presto.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd>
<dd id="Presto.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd> <dd id="Presto.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd>
<dd id="Presto.Parser.FETCH_TOKENS" class="variable"><a href="../parser.html#Parser.FETCH_TOKENS">FETCH_TOKENS</a></dd>
<dd id="Presto.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd> <dd id="Presto.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd>
<dd id="Presto.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd> <dd id="Presto.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd>
<dd id="Presto.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd> <dd id="Presto.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd>
@ -1614,7 +1631,6 @@ Default: 3</li>
<dd id="Presto.Parser.IDENTIFY_PIVOT_STRINGS" class="variable"><a href="../parser.html#Parser.IDENTIFY_PIVOT_STRINGS">IDENTIFY_PIVOT_STRINGS</a></dd> <dd id="Presto.Parser.IDENTIFY_PIVOT_STRINGS" class="variable"><a href="../parser.html#Parser.IDENTIFY_PIVOT_STRINGS">IDENTIFY_PIVOT_STRINGS</a></dd>
<dd id="Presto.Parser.LOG_BASE_FIRST" class="variable"><a href="../parser.html#Parser.LOG_BASE_FIRST">LOG_BASE_FIRST</a></dd> <dd id="Presto.Parser.LOG_BASE_FIRST" class="variable"><a href="../parser.html#Parser.LOG_BASE_FIRST">LOG_BASE_FIRST</a></dd>
<dd id="Presto.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="../parser.html#Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd> <dd id="Presto.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="../parser.html#Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd>
<dd id="Presto.Parser.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="../parser.html#Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Presto.Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD" class="variable"><a href="../parser.html#Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD">ALTER_TABLE_ADD_COLUMN_KEYWORD</a></dd> <dd id="Presto.Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD" class="variable"><a href="../parser.html#Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD">ALTER_TABLE_ADD_COLUMN_KEYWORD</a></dd>
<dd id="Presto.Parser.TABLESAMPLE_CSV" class="variable"><a href="../parser.html#Parser.TABLESAMPLE_CSV">TABLESAMPLE_CSV</a></dd> <dd id="Presto.Parser.TABLESAMPLE_CSV" class="variable"><a href="../parser.html#Parser.TABLESAMPLE_CSV">TABLESAMPLE_CSV</a></dd>
<dd id="Presto.Parser.UNNEST_COLUMN_ONLY" class="variable"><a href="../parser.html#Parser.UNNEST_COLUMN_ONLY">UNNEST_COLUMN_ONLY</a></dd> <dd id="Presto.Parser.UNNEST_COLUMN_ONLY" class="variable"><a href="../parser.html#Parser.UNNEST_COLUMN_ONLY">UNNEST_COLUMN_ONLY</a></dd>
@ -2179,26 +2195,26 @@ Default: True</li>
</div> </div>
<a class="headerlink" href="#Presto.Generator.can_identify"></a> <a class="headerlink" href="#Presto.Generator.can_identify"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Presto.Generator.can_identify-257"><a href="#Presto.Generator.can_identify-257"><span class="linenos">257</span></a> <span class="nd">@classmethod</span> <div class="pdoc-code codehilite"><pre><span></span><span id="Presto.Generator.can_identify-260"><a href="#Presto.Generator.can_identify-260"><span class="linenos">260</span></a> <span class="nd">@classmethod</span>
</span><span id="Presto.Generator.can_identify-258"><a href="#Presto.Generator.can_identify-258"><span class="linenos">258</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="Presto.Generator.can_identify-261"><a href="#Presto.Generator.can_identify-261"><span class="linenos">261</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="Presto.Generator.can_identify-259"><a href="#Presto.Generator.can_identify-259"><span class="linenos">259</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="Presto.Generator.can_identify-262"><a href="#Presto.Generator.can_identify-262"><span class="linenos">262</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="Presto.Generator.can_identify-260"><a href="#Presto.Generator.can_identify-260"><span class="linenos">260</span></a> </span><span id="Presto.Generator.can_identify-263"><a href="#Presto.Generator.can_identify-263"><span class="linenos">263</span></a>
</span><span id="Presto.Generator.can_identify-261"><a href="#Presto.Generator.can_identify-261"><span class="linenos">261</span></a><span class="sd"> Args:</span> </span><span id="Presto.Generator.can_identify-264"><a href="#Presto.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> Args:</span>
</span><span id="Presto.Generator.can_identify-262"><a href="#Presto.Generator.can_identify-262"><span class="linenos">262</span></a><span class="sd"> text: The text to check.</span> </span><span id="Presto.Generator.can_identify-265"><a href="#Presto.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> text: The text to check.</span>
</span><span id="Presto.Generator.can_identify-263"><a href="#Presto.Generator.can_identify-263"><span class="linenos">263</span></a><span class="sd"> identify:</span> </span><span id="Presto.Generator.can_identify-266"><a href="#Presto.Generator.can_identify-266"><span class="linenos">266</span></a><span class="sd"> identify:</span>
</span><span id="Presto.Generator.can_identify-264"><a href="#Presto.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span> </span><span id="Presto.Generator.can_identify-267"><a href="#Presto.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span>
</span><span id="Presto.Generator.can_identify-265"><a href="#Presto.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span> </span><span id="Presto.Generator.can_identify-268"><a href="#Presto.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span>
</span><span id="Presto.Generator.can_identify-266"><a href="#Presto.Generator.can_identify-266"><span class="linenos">266</span></a> </span><span id="Presto.Generator.can_identify-269"><a href="#Presto.Generator.can_identify-269"><span class="linenos">269</span></a>
</span><span id="Presto.Generator.can_identify-267"><a href="#Presto.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> Returns:</span> </span><span id="Presto.Generator.can_identify-270"><a href="#Presto.Generator.can_identify-270"><span class="linenos">270</span></a><span class="sd"> Returns:</span>
</span><span id="Presto.Generator.can_identify-268"><a href="#Presto.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> Whether or not the given text can be identified.</span> </span><span id="Presto.Generator.can_identify-271"><a href="#Presto.Generator.can_identify-271"><span class="linenos">271</span></a><span class="sd"> Whether or not the given text can be identified.</span>
</span><span id="Presto.Generator.can_identify-269"><a href="#Presto.Generator.can_identify-269"><span class="linenos">269</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="Presto.Generator.can_identify-272"><a href="#Presto.Generator.can_identify-272"><span class="linenos">272</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Presto.Generator.can_identify-270"><a href="#Presto.Generator.can_identify-270"><span class="linenos">270</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="Presto.Generator.can_identify-273"><a href="#Presto.Generator.can_identify-273"><span class="linenos">273</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="Presto.Generator.can_identify-271"><a href="#Presto.Generator.can_identify-271"><span class="linenos">271</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="Presto.Generator.can_identify-274"><a href="#Presto.Generator.can_identify-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="kc">True</span>
</span><span id="Presto.Generator.can_identify-272"><a href="#Presto.Generator.can_identify-272"><span class="linenos">272</span></a>
</span><span id="Presto.Generator.can_identify-273"><a href="#Presto.Generator.can_identify-273"><span class="linenos">273</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="Presto.Generator.can_identify-274"><a href="#Presto.Generator.can_identify-274"><span class="linenos">274</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="Presto.Generator.can_identify-275"><a href="#Presto.Generator.can_identify-275"><span class="linenos">275</span></a> </span><span id="Presto.Generator.can_identify-275"><a href="#Presto.Generator.can_identify-275"><span class="linenos">275</span></a>
</span><span id="Presto.Generator.can_identify-276"><a href="#Presto.Generator.can_identify-276"><span class="linenos">276</span></a> <span class="k">return</span> <span class="kc">False</span> </span><span id="Presto.Generator.can_identify-276"><a href="#Presto.Generator.can_identify-276"><span class="linenos">276</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="Presto.Generator.can_identify-277"><a href="#Presto.Generator.can_identify-277"><span class="linenos">277</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="Presto.Generator.can_identify-278"><a href="#Presto.Generator.can_identify-278"><span class="linenos">278</span></a>
</span><span id="Presto.Generator.can_identify-279"><a href="#Presto.Generator.can_identify-279"><span class="linenos">279</span></a> <span class="k">return</span> <span class="kc">False</span>
</span></pre></div> </span></pre></div>

View file

@ -36,6 +36,9 @@
<li> <li>
<a class="variable" href="#Redshift.RESOLVES_IDENTIFIERS_AS_UPPERCASE">RESOLVES_IDENTIFIERS_AS_UPPERCASE</a> <a class="variable" href="#Redshift.RESOLVES_IDENTIFIERS_AS_UPPERCASE">RESOLVES_IDENTIFIERS_AS_UPPERCASE</a>
</li> </li>
<li>
<a class="variable" href="#Redshift.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a>
</li>
<li> <li>
<a class="variable" href="#Redshift.TIME_FORMAT">TIME_FORMAT</a> <a class="variable" href="#Redshift.TIME_FORMAT">TIME_FORMAT</a>
</li> </li>
@ -45,15 +48,15 @@
<li> <li>
<a class="class" href="#Redshift.Parser">Redshift.Parser</a> <a class="class" href="#Redshift.Parser">Redshift.Parser</a>
<ul class="memberlist"> <ul class="memberlist">
<li>
<a class="variable" href="#Redshift.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a>
</li>
<li> <li>
<a class="variable" href="#Redshift.Parser.FUNCTIONS">FUNCTIONS</a> <a class="variable" href="#Redshift.Parser.FUNCTIONS">FUNCTIONS</a>
</li> </li>
<li> <li>
<a class="variable" href="#Redshift.Parser.TOKENIZER_CLASS">TOKENIZER_CLASS</a> <a class="variable" href="#Redshift.Parser.TOKENIZER_CLASS">TOKENIZER_CLASS</a>
</li> </li>
<li>
<a class="variable" href="#Redshift.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a>
</li>
<li> <li>
<a class="variable" href="#Redshift.Parser.SHOW_TRIE">SHOW_TRIE</a> <a class="variable" href="#Redshift.Parser.SHOW_TRIE">SHOW_TRIE</a>
</li> </li>
@ -289,16 +292,16 @@
</span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a> <span class="c1"># https://docs.aws.amazon.com/redshift/latest/dg/r_names.html</span> </span><span id="L-30"><a href="#L-30"><span class="linenos"> 30</span></a> <span class="c1"># https://docs.aws.amazon.com/redshift/latest/dg/r_names.html</span>
</span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a> <span class="n">RESOLVES_IDENTIFIERS_AS_UPPERCASE</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="L-31"><a href="#L-31"><span class="linenos"> 31</span></a> <span class="n">RESOLVES_IDENTIFIERS_AS_UPPERCASE</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a> </span><span id="L-32"><a href="#L-32"><span class="linenos"> 32</span></a>
</span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;YYYY-MM-DD HH:MI:SS&#39;&quot;</span> </span><span id="L-33"><a href="#L-33"><span class="linenos"> 33</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-34"><a href="#L-34"><span class="linenos"> 34</span></a>
</span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a> <span class="o">**</span><span class="n">Postgres</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span> </span><span id="L-35"><a href="#L-35"><span class="linenos"> 35</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;YYYY-MM-DD HH:MI:SS&#39;&quot;</span>
</span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a> <span class="s2">&quot;MON&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span> </span><span id="L-36"><a href="#L-36"><span class="linenos"> 36</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a> <span class="s2">&quot;HH&quot;</span><span class="p">:</span> <span class="s2">&quot;%H&quot;</span><span class="p">,</span> </span><span id="L-37"><a href="#L-37"><span class="linenos"> 37</span></a> <span class="o">**</span><span class="n">Postgres</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span>
</span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a> <span class="p">}</span> </span><span id="L-38"><a href="#L-38"><span class="linenos"> 38</span></a> <span class="s2">&quot;MON&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span>
</span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a> </span><span id="L-39"><a href="#L-39"><span class="linenos"> 39</span></a> <span class="s2">&quot;HH&quot;</span><span class="p">:</span> <span class="s2">&quot;%H&quot;</span><span class="p">,</span>
</span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">Postgres</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span> </span><span id="L-40"><a href="#L-40"><span class="linenos"> 40</span></a> <span class="p">}</span>
</span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="L-41"><a href="#L-41"><span class="linenos"> 41</span></a>
</span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a> </span><span id="L-42"><a href="#L-42"><span class="linenos"> 42</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">Postgres</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span>
</span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-43"><a href="#L-43"><span class="linenos"> 43</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-44"><a href="#L-44"><span class="linenos"> 44</span></a> <span class="o">**</span><span class="n">Postgres</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-44"><a href="#L-44"><span class="linenos"> 44</span></a> <span class="o">**</span><span class="n">Postgres</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-45"><a href="#L-45"><span class="linenos"> 45</span></a> <span class="s2">&quot;ADD_MONTHS&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">DateAdd</span><span class="p">(</span> </span><span id="L-45"><a href="#L-45"><span class="linenos"> 45</span></a> <span class="s2">&quot;ADD_MONTHS&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">DateAdd</span><span class="p">(</span>
@ -452,16 +455,16 @@
</span><span id="Redshift-31"><a href="#Redshift-31"><span class="linenos"> 31</span></a> <span class="c1"># https://docs.aws.amazon.com/redshift/latest/dg/r_names.html</span> </span><span id="Redshift-31"><a href="#Redshift-31"><span class="linenos"> 31</span></a> <span class="c1"># https://docs.aws.amazon.com/redshift/latest/dg/r_names.html</span>
</span><span id="Redshift-32"><a href="#Redshift-32"><span class="linenos"> 32</span></a> <span class="n">RESOLVES_IDENTIFIERS_AS_UPPERCASE</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="Redshift-32"><a href="#Redshift-32"><span class="linenos"> 32</span></a> <span class="n">RESOLVES_IDENTIFIERS_AS_UPPERCASE</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="Redshift-33"><a href="#Redshift-33"><span class="linenos"> 33</span></a> </span><span id="Redshift-33"><a href="#Redshift-33"><span class="linenos"> 33</span></a>
</span><span id="Redshift-34"><a href="#Redshift-34"><span class="linenos"> 34</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;YYYY-MM-DD HH:MI:SS&#39;&quot;</span> </span><span id="Redshift-34"><a href="#Redshift-34"><span class="linenos"> 34</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Redshift-35"><a href="#Redshift-35"><span class="linenos"> 35</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Redshift-35"><a href="#Redshift-35"><span class="linenos"> 35</span></a>
</span><span id="Redshift-36"><a href="#Redshift-36"><span class="linenos"> 36</span></a> <span class="o">**</span><span class="n">Postgres</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span> </span><span id="Redshift-36"><a href="#Redshift-36"><span class="linenos"> 36</span></a> <span class="n">TIME_FORMAT</span> <span class="o">=</span> <span class="s2">&quot;&#39;YYYY-MM-DD HH:MI:SS&#39;&quot;</span>
</span><span id="Redshift-37"><a href="#Redshift-37"><span class="linenos"> 37</span></a> <span class="s2">&quot;MON&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span> </span><span id="Redshift-37"><a href="#Redshift-37"><span class="linenos"> 37</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Redshift-38"><a href="#Redshift-38"><span class="linenos"> 38</span></a> <span class="s2">&quot;HH&quot;</span><span class="p">:</span> <span class="s2">&quot;%H&quot;</span><span class="p">,</span> </span><span id="Redshift-38"><a href="#Redshift-38"><span class="linenos"> 38</span></a> <span class="o">**</span><span class="n">Postgres</span><span class="o">.</span><span class="n">TIME_MAPPING</span><span class="p">,</span>
</span><span id="Redshift-39"><a href="#Redshift-39"><span class="linenos"> 39</span></a> <span class="p">}</span> </span><span id="Redshift-39"><a href="#Redshift-39"><span class="linenos"> 39</span></a> <span class="s2">&quot;MON&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span>
</span><span id="Redshift-40"><a href="#Redshift-40"><span class="linenos"> 40</span></a> </span><span id="Redshift-40"><a href="#Redshift-40"><span class="linenos"> 40</span></a> <span class="s2">&quot;HH&quot;</span><span class="p">:</span> <span class="s2">&quot;%H&quot;</span><span class="p">,</span>
</span><span id="Redshift-41"><a href="#Redshift-41"><span class="linenos"> 41</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">Postgres</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span> </span><span id="Redshift-41"><a href="#Redshift-41"><span class="linenos"> 41</span></a> <span class="p">}</span>
</span><span id="Redshift-42"><a href="#Redshift-42"><span class="linenos"> 42</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="Redshift-42"><a href="#Redshift-42"><span class="linenos"> 42</span></a>
</span><span id="Redshift-43"><a href="#Redshift-43"><span class="linenos"> 43</span></a> </span><span id="Redshift-43"><a href="#Redshift-43"><span class="linenos"> 43</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">Postgres</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span>
</span><span id="Redshift-44"><a href="#Redshift-44"><span class="linenos"> 44</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Redshift-44"><a href="#Redshift-44"><span class="linenos"> 44</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Redshift-45"><a href="#Redshift-45"><span class="linenos"> 45</span></a> <span class="o">**</span><span class="n">Postgres</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="Redshift-45"><a href="#Redshift-45"><span class="linenos"> 45</span></a> <span class="o">**</span><span class="n">Postgres</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="Redshift-46"><a href="#Redshift-46"><span class="linenos"> 46</span></a> <span class="s2">&quot;ADD_MONTHS&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">DateAdd</span><span class="p">(</span> </span><span id="Redshift-46"><a href="#Redshift-46"><span class="linenos"> 46</span></a> <span class="s2">&quot;ADD_MONTHS&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">DateAdd</span><span class="p">(</span>
@ -612,6 +615,18 @@
</div>
<div id="Redshift.SUPPORTS_USER_DEFINED_TYPES" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_USER_DEFINED_TYPES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Redshift.SUPPORTS_USER_DEFINED_TYPES"></a>
</div> </div>
<div id="Redshift.TIME_FORMAT" class="classattr"> <div id="Redshift.TIME_FORMAT" class="classattr">
<div class="attr variable"> <div class="attr variable">
@ -895,9 +910,7 @@
</div> </div>
<a class="headerlink" href="#Redshift.Parser"></a> <a class="headerlink" href="#Redshift.Parser"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Redshift.Parser-41"><a href="#Redshift.Parser-41"><span class="linenos">41</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">Postgres</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span> <div class="pdoc-code codehilite"><pre><span></span><span id="Redshift.Parser-43"><a href="#Redshift.Parser-43"><span class="linenos">43</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">Postgres</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span>
</span><span id="Redshift.Parser-42"><a href="#Redshift.Parser-42"><span class="linenos">42</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Redshift.Parser-43"><a href="#Redshift.Parser-43"><span class="linenos">43</span></a>
</span><span id="Redshift.Parser-44"><a href="#Redshift.Parser-44"><span class="linenos">44</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Redshift.Parser-44"><a href="#Redshift.Parser-44"><span class="linenos">44</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Redshift.Parser-45"><a href="#Redshift.Parser-45"><span class="linenos">45</span></a> <span class="o">**</span><span class="n">Postgres</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="Redshift.Parser-45"><a href="#Redshift.Parser-45"><span class="linenos">45</span></a> <span class="o">**</span><span class="n">Postgres</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="Redshift.Parser-46"><a href="#Redshift.Parser-46"><span class="linenos">46</span></a> <span class="s2">&quot;ADD_MONTHS&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">DateAdd</span><span class="p">(</span> </span><span id="Redshift.Parser-46"><a href="#Redshift.Parser-46"><span class="linenos">46</span></a> <span class="s2">&quot;ADD_MONTHS&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">DateAdd</span><span class="p">(</span>
@ -957,18 +970,6 @@ Default: 3</li>
</div> </div>
<div id="Redshift.Parser.SUPPORTS_USER_DEFINED_TYPES" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_USER_DEFINED_TYPES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Redshift.Parser.SUPPORTS_USER_DEFINED_TYPES"></a>
</div>
<div id="Redshift.Parser.FUNCTIONS" class="classattr"> <div id="Redshift.Parser.FUNCTIONS" class="classattr">
<div class="attr variable"> <div class="attr variable">
<span class="name">FUNCTIONS</span> = <span class="name">FUNCTIONS</span> =
@ -993,6 +994,18 @@ Default: 3</li>
</div>
<div id="Redshift.Parser.SUPPORTS_USER_DEFINED_TYPES" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_USER_DEFINED_TYPES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Redshift.Parser.SUPPORTS_USER_DEFINED_TYPES"></a>
</div> </div>
<div id="Redshift.Parser.SHOW_TRIE" class="classattr"> <div id="Redshift.Parser.SHOW_TRIE" class="classattr">
<div class="attr variable"> <div class="attr variable">
@ -1119,6 +1132,7 @@ Default: 3</li>
<dd id="Redshift.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd> <dd id="Redshift.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd>
<dd id="Redshift.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd> <dd id="Redshift.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd>
<dd id="Redshift.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd> <dd id="Redshift.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd>
<dd id="Redshift.Parser.FETCH_TOKENS" class="variable"><a href="../parser.html#Parser.FETCH_TOKENS">FETCH_TOKENS</a></dd>
<dd id="Redshift.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd> <dd id="Redshift.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd>
<dd id="Redshift.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd> <dd id="Redshift.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd>
<dd id="Redshift.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd> <dd id="Redshift.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd>
@ -1530,7 +1544,7 @@ Default: True</li>
<div id="Redshift.Generator.RESERVED_KEYWORDS" class="classattr"> <div id="Redshift.Generator.RESERVED_KEYWORDS" class="classattr">
<div class="attr variable"> <div class="attr variable">
<span class="name">RESERVED_KEYWORDS</span> = <span class="name">RESERVED_KEYWORDS</span> =
<span class="default_value">{&#39;type&#39;, &#39;snapshot&#39;}</span> <span class="default_value">{&#39;snapshot&#39;, &#39;type&#39;}</span>
</div> </div>
@ -1649,26 +1663,26 @@ without precision we convert it to <code>VARCHAR(max)</code> and if it does have
</div> </div>
<a class="headerlink" href="#Redshift.Generator.can_identify"></a> <a class="headerlink" href="#Redshift.Generator.can_identify"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Redshift.Generator.can_identify-257"><a href="#Redshift.Generator.can_identify-257"><span class="linenos">257</span></a> <span class="nd">@classmethod</span> <div class="pdoc-code codehilite"><pre><span></span><span id="Redshift.Generator.can_identify-260"><a href="#Redshift.Generator.can_identify-260"><span class="linenos">260</span></a> <span class="nd">@classmethod</span>
</span><span id="Redshift.Generator.can_identify-258"><a href="#Redshift.Generator.can_identify-258"><span class="linenos">258</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="Redshift.Generator.can_identify-261"><a href="#Redshift.Generator.can_identify-261"><span class="linenos">261</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="Redshift.Generator.can_identify-259"><a href="#Redshift.Generator.can_identify-259"><span class="linenos">259</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="Redshift.Generator.can_identify-262"><a href="#Redshift.Generator.can_identify-262"><span class="linenos">262</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="Redshift.Generator.can_identify-260"><a href="#Redshift.Generator.can_identify-260"><span class="linenos">260</span></a> </span><span id="Redshift.Generator.can_identify-263"><a href="#Redshift.Generator.can_identify-263"><span class="linenos">263</span></a>
</span><span id="Redshift.Generator.can_identify-261"><a href="#Redshift.Generator.can_identify-261"><span class="linenos">261</span></a><span class="sd"> Args:</span> </span><span id="Redshift.Generator.can_identify-264"><a href="#Redshift.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> Args:</span>
</span><span id="Redshift.Generator.can_identify-262"><a href="#Redshift.Generator.can_identify-262"><span class="linenos">262</span></a><span class="sd"> text: The text to check.</span> </span><span id="Redshift.Generator.can_identify-265"><a href="#Redshift.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> text: The text to check.</span>
</span><span id="Redshift.Generator.can_identify-263"><a href="#Redshift.Generator.can_identify-263"><span class="linenos">263</span></a><span class="sd"> identify:</span> </span><span id="Redshift.Generator.can_identify-266"><a href="#Redshift.Generator.can_identify-266"><span class="linenos">266</span></a><span class="sd"> identify:</span>
</span><span id="Redshift.Generator.can_identify-264"><a href="#Redshift.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span> </span><span id="Redshift.Generator.can_identify-267"><a href="#Redshift.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span>
</span><span id="Redshift.Generator.can_identify-265"><a href="#Redshift.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span> </span><span id="Redshift.Generator.can_identify-268"><a href="#Redshift.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span>
</span><span id="Redshift.Generator.can_identify-266"><a href="#Redshift.Generator.can_identify-266"><span class="linenos">266</span></a> </span><span id="Redshift.Generator.can_identify-269"><a href="#Redshift.Generator.can_identify-269"><span class="linenos">269</span></a>
</span><span id="Redshift.Generator.can_identify-267"><a href="#Redshift.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> Returns:</span> </span><span id="Redshift.Generator.can_identify-270"><a href="#Redshift.Generator.can_identify-270"><span class="linenos">270</span></a><span class="sd"> Returns:</span>
</span><span id="Redshift.Generator.can_identify-268"><a href="#Redshift.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> Whether or not the given text can be identified.</span> </span><span id="Redshift.Generator.can_identify-271"><a href="#Redshift.Generator.can_identify-271"><span class="linenos">271</span></a><span class="sd"> Whether or not the given text can be identified.</span>
</span><span id="Redshift.Generator.can_identify-269"><a href="#Redshift.Generator.can_identify-269"><span class="linenos">269</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="Redshift.Generator.can_identify-272"><a href="#Redshift.Generator.can_identify-272"><span class="linenos">272</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Redshift.Generator.can_identify-270"><a href="#Redshift.Generator.can_identify-270"><span class="linenos">270</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="Redshift.Generator.can_identify-273"><a href="#Redshift.Generator.can_identify-273"><span class="linenos">273</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="Redshift.Generator.can_identify-271"><a href="#Redshift.Generator.can_identify-271"><span class="linenos">271</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="Redshift.Generator.can_identify-274"><a href="#Redshift.Generator.can_identify-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="kc">True</span>
</span><span id="Redshift.Generator.can_identify-272"><a href="#Redshift.Generator.can_identify-272"><span class="linenos">272</span></a>
</span><span id="Redshift.Generator.can_identify-273"><a href="#Redshift.Generator.can_identify-273"><span class="linenos">273</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="Redshift.Generator.can_identify-274"><a href="#Redshift.Generator.can_identify-274"><span class="linenos">274</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="Redshift.Generator.can_identify-275"><a href="#Redshift.Generator.can_identify-275"><span class="linenos">275</span></a> </span><span id="Redshift.Generator.can_identify-275"><a href="#Redshift.Generator.can_identify-275"><span class="linenos">275</span></a>
</span><span id="Redshift.Generator.can_identify-276"><a href="#Redshift.Generator.can_identify-276"><span class="linenos">276</span></a> <span class="k">return</span> <span class="kc">False</span> </span><span id="Redshift.Generator.can_identify-276"><a href="#Redshift.Generator.can_identify-276"><span class="linenos">276</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="Redshift.Generator.can_identify-277"><a href="#Redshift.Generator.can_identify-277"><span class="linenos">277</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="Redshift.Generator.can_identify-278"><a href="#Redshift.Generator.can_identify-278"><span class="linenos">278</span></a>
</span><span id="Redshift.Generator.can_identify-279"><a href="#Redshift.Generator.can_identify-279"><span class="linenos">279</span></a> <span class="k">return</span> <span class="kc">False</span>
</span></pre></div> </span></pre></div>

View file

@ -42,6 +42,9 @@
<li> <li>
<a class="variable" href="#Snowflake.TIME_FORMAT">TIME_FORMAT</a> <a class="variable" href="#Snowflake.TIME_FORMAT">TIME_FORMAT</a>
</li> </li>
<li>
<a class="variable" href="#Snowflake.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a>
</li>
<li> <li>
<a class="variable" href="#Snowflake.TIME_MAPPING">TIME_MAPPING</a> <a class="variable" href="#Snowflake.TIME_MAPPING">TIME_MAPPING</a>
</li> </li>
@ -51,9 +54,6 @@
<li> <li>
<a class="variable" href="#Snowflake.Parser.IDENTIFY_PIVOT_STRINGS">IDENTIFY_PIVOT_STRINGS</a> <a class="variable" href="#Snowflake.Parser.IDENTIFY_PIVOT_STRINGS">IDENTIFY_PIVOT_STRINGS</a>
</li> </li>
<li>
<a class="variable" href="#Snowflake.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a>
</li>
<li> <li>
<a class="variable" href="#Snowflake.Parser.FUNCTIONS">FUNCTIONS</a> <a class="variable" href="#Snowflake.Parser.FUNCTIONS">FUNCTIONS</a>
</li> </li>
@ -81,6 +81,9 @@
<li> <li>
<a class="variable" href="#Snowflake.Parser.TOKENIZER_CLASS">TOKENIZER_CLASS</a> <a class="variable" href="#Snowflake.Parser.TOKENIZER_CLASS">TOKENIZER_CLASS</a>
</li> </li>
<li>
<a class="variable" href="#Snowflake.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a>
</li>
<li> <li>
<a class="variable" href="#Snowflake.Parser.NULL_ORDERING">NULL_ORDERING</a> <a class="variable" href="#Snowflake.Parser.NULL_ORDERING">NULL_ORDERING</a>
</li> </li>
@ -515,39 +518,39 @@
</span><span id="L-202"><a href="#L-202"><span class="linenos">202</span></a> <span class="n">RESOLVES_IDENTIFIERS_AS_UPPERCASE</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-202"><a href="#L-202"><span class="linenos">202</span></a> <span class="n">RESOLVES_IDENTIFIERS_AS_UPPERCASE</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-203"><a href="#L-203"><span class="linenos">203</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-203"><a href="#L-203"><span class="linenos">203</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-204"><a href="#L-204"><span class="linenos">204</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-204"><a href="#L-204"><span class="linenos">204</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-205"><a href="#L-205"><span class="linenos">205</span></a> </span><span id="L-205"><a href="#L-205"><span class="linenos">205</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-206"><a href="#L-206"><span class="linenos">206</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-206"><a href="#L-206"><span class="linenos">206</span></a>
</span><span id="L-207"><a href="#L-207"><span class="linenos">207</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><span id="L-207"><a href="#L-207"><span class="linenos">207</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-208"><a href="#L-208"><span class="linenos">208</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><span id="L-208"><a href="#L-208"><span class="linenos">208</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><span id="L-209"><a href="#L-209"><span class="linenos">209</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><span id="L-209"><a href="#L-209"><span class="linenos">209</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><span id="L-210"><a href="#L-210"><span class="linenos">210</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><span id="L-210"><a href="#L-210"><span class="linenos">210</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><span id="L-211"><a href="#L-211"><span class="linenos">211</span></a> <span class="s2">&quot;MMMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&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;yy&quot;</span><span class="p">:</span> <span class="s2">&quot;%y&quot;</span><span class="p">,</span>
</span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a> <span class="s2">&quot;mmmm&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&quot;</span><span class="p">,</span> </span><span id="L-212"><a href="#L-212"><span class="linenos">212</span></a> <span class="s2">&quot;MMMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&quot;</span><span class="p">,</span>
</span><span id="L-213"><a href="#L-213"><span class="linenos">213</span></a> <span class="s2">&quot;MON&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span> </span><span id="L-213"><a href="#L-213"><span class="linenos">213</span></a> <span class="s2">&quot;mmmm&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&quot;</span><span class="p">,</span>
</span><span id="L-214"><a href="#L-214"><span class="linenos">214</span></a> <span class="s2">&quot;mon&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span> </span><span id="L-214"><a href="#L-214"><span class="linenos">214</span></a> <span class="s2">&quot;MON&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&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;MM&quot;</span><span class="p">:</span> <span class="s2">&quot;%m&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;mon&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&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;mm&quot;</span><span class="p">:</span> <span class="s2">&quot;%m&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;MM&quot;</span><span class="p">:</span> <span class="s2">&quot;%m&quot;</span><span class="p">,</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><span id="L-217"><a href="#L-217"><span class="linenos">217</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><span id="L-218"><a href="#L-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><span id="L-218"><a href="#L-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><span id="L-219"><a href="#L-219"><span class="linenos">219</span></a> <span class="s2">&quot;DY&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-219"><a href="#L-219"><span class="linenos">219</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><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> <span class="s2">&quot;dy&quot;</span><span class="p">:</span> <span class="s2">&quot;%w&quot;</span><span class="p">,</span> </span><span id="L-220"><a href="#L-220"><span class="linenos">220</span></a> <span class="s2">&quot;DY&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-221"><a href="#L-221"><span class="linenos">221</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><span id="L-221"><a href="#L-221"><span class="linenos">221</span></a> <span class="s2">&quot;dy&quot;</span><span class="p">:</span> <span class="s2">&quot;%w&quot;</span><span class="p">,</span>
</span><span id="L-222"><a href="#L-222"><span class="linenos">222</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><span id="L-222"><a href="#L-222"><span class="linenos">222</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><span id="L-223"><a href="#L-223"><span class="linenos">223</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><span id="L-223"><a href="#L-223"><span class="linenos">223</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><span id="L-224"><a href="#L-224"><span class="linenos">224</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><span id="L-224"><a href="#L-224"><span class="linenos">224</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><span id="L-225"><a href="#L-225"><span class="linenos">225</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><span id="L-225"><a href="#L-225"><span class="linenos">225</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><span id="L-226"><a href="#L-226"><span class="linenos">226</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><span id="L-226"><a href="#L-226"><span class="linenos">226</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><span id="L-227"><a href="#L-227"><span class="linenos">227</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><span id="L-227"><a href="#L-227"><span class="linenos">227</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><span id="L-228"><a href="#L-228"><span class="linenos">228</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><span id="L-228"><a href="#L-228"><span class="linenos">228</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><span id="L-229"><a href="#L-229"><span class="linenos">229</span></a> <span class="s2">&quot;FF&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><span id="L-229"><a href="#L-229"><span class="linenos">229</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><span id="L-230"><a href="#L-230"><span class="linenos">230</span></a> <span class="s2">&quot;ff&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><span id="L-230"><a href="#L-230"><span class="linenos">230</span></a> <span class="s2">&quot;FF&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><span id="L-231"><a href="#L-231"><span class="linenos">231</span></a> <span class="s2">&quot;FF6&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><span id="L-231"><a href="#L-231"><span class="linenos">231</span></a> <span class="s2">&quot;ff&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><span id="L-232"><a href="#L-232"><span class="linenos">232</span></a> <span class="s2">&quot;ff6&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><span id="L-232"><a href="#L-232"><span class="linenos">232</span></a> <span class="s2">&quot;FF6&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><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a> <span class="p">}</span> </span><span id="L-233"><a href="#L-233"><span class="linenos">233</span></a> <span class="s2">&quot;ff6&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><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a> </span><span id="L-234"><a href="#L-234"><span class="linenos">234</span></a> <span class="p">}</span>
</span><span id="L-235"><a href="#L-235"><span class="linenos">235</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-235"><a href="#L-235"><span class="linenos">235</span></a>
</span><span id="L-236"><a href="#L-236"><span class="linenos">236</span></a> <span class="n">IDENTIFY_PIVOT_STRINGS</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-236"><a href="#L-236"><span class="linenos">236</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-237"><a href="#L-237"><span class="linenos">237</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="L-237"><a href="#L-237"><span class="linenos">237</span></a> <span class="n">IDENTIFY_PIVOT_STRINGS</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-238"><a href="#L-238"><span class="linenos">238</span></a> </span><span id="L-238"><a href="#L-238"><span class="linenos">238</span></a>
</span><span id="L-239"><a href="#L-239"><span class="linenos">239</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-239"><a href="#L-239"><span class="linenos">239</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-240"><a href="#L-240"><span class="linenos">240</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-240"><a href="#L-240"><span class="linenos">240</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>
@ -837,39 +840,39 @@
</span><span id="Snowflake-203"><a href="#Snowflake-203"><span class="linenos">203</span></a> <span class="n">RESOLVES_IDENTIFIERS_AS_UPPERCASE</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="Snowflake-203"><a href="#Snowflake-203"><span class="linenos">203</span></a> <span class="n">RESOLVES_IDENTIFIERS_AS_UPPERCASE</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Snowflake-204"><a href="#Snowflake-204"><span class="linenos">204</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">&quot;nulls_are_large&quot;</span> </span><span id="Snowflake-204"><a href="#Snowflake-204"><span class="linenos">204</span></a> <span class="n">NULL_ORDERING</span> <span class="o">=</span> <span class="s2">&quot;nulls_are_large&quot;</span>
</span><span id="Snowflake-205"><a href="#Snowflake-205"><span class="linenos">205</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="Snowflake-205"><a href="#Snowflake-205"><span class="linenos">205</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="Snowflake-206"><a href="#Snowflake-206"><span class="linenos">206</span></a> </span><span id="Snowflake-206"><a href="#Snowflake-206"><span class="linenos">206</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Snowflake-207"><a href="#Snowflake-207"><span class="linenos">207</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Snowflake-207"><a href="#Snowflake-207"><span class="linenos">207</span></a>
</span><span id="Snowflake-208"><a href="#Snowflake-208"><span class="linenos">208</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><span id="Snowflake-208"><a href="#Snowflake-208"><span class="linenos">208</span></a> <span class="n">TIME_MAPPING</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Snowflake-209"><a href="#Snowflake-209"><span class="linenos">209</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><span id="Snowflake-209"><a href="#Snowflake-209"><span class="linenos">209</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><span id="Snowflake-210"><a href="#Snowflake-210"><span class="linenos">210</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><span id="Snowflake-210"><a href="#Snowflake-210"><span class="linenos">210</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><span id="Snowflake-211"><a href="#Snowflake-211"><span class="linenos">211</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><span id="Snowflake-211"><a href="#Snowflake-211"><span class="linenos">211</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><span id="Snowflake-212"><a href="#Snowflake-212"><span class="linenos">212</span></a> <span class="s2">&quot;MMMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&quot;</span><span class="p">,</span> </span><span id="Snowflake-212"><a href="#Snowflake-212"><span class="linenos">212</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><span id="Snowflake-213"><a href="#Snowflake-213"><span class="linenos">213</span></a> <span class="s2">&quot;mmmm&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&quot;</span><span class="p">,</span> </span><span id="Snowflake-213"><a href="#Snowflake-213"><span class="linenos">213</span></a> <span class="s2">&quot;MMMM&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&quot;</span><span class="p">,</span>
</span><span id="Snowflake-214"><a href="#Snowflake-214"><span class="linenos">214</span></a> <span class="s2">&quot;MON&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span> </span><span id="Snowflake-214"><a href="#Snowflake-214"><span class="linenos">214</span></a> <span class="s2">&quot;mmmm&quot;</span><span class="p">:</span> <span class="s2">&quot;%B&quot;</span><span class="p">,</span>
</span><span id="Snowflake-215"><a href="#Snowflake-215"><span class="linenos">215</span></a> <span class="s2">&quot;mon&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span> </span><span id="Snowflake-215"><a href="#Snowflake-215"><span class="linenos">215</span></a> <span class="s2">&quot;MON&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span>
</span><span id="Snowflake-216"><a href="#Snowflake-216"><span class="linenos">216</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><span id="Snowflake-216"><a href="#Snowflake-216"><span class="linenos">216</span></a> <span class="s2">&quot;mon&quot;</span><span class="p">:</span> <span class="s2">&quot;%b&quot;</span><span class="p">,</span>
</span><span id="Snowflake-217"><a href="#Snowflake-217"><span class="linenos">217</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><span id="Snowflake-217"><a href="#Snowflake-217"><span class="linenos">217</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><span id="Snowflake-218"><a href="#Snowflake-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><span id="Snowflake-218"><a href="#Snowflake-218"><span class="linenos">218</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><span id="Snowflake-219"><a href="#Snowflake-219"><span class="linenos">219</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><span id="Snowflake-219"><a href="#Snowflake-219"><span class="linenos">219</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><span id="Snowflake-220"><a href="#Snowflake-220"><span class="linenos">220</span></a> <span class="s2">&quot;DY&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="Snowflake-220"><a href="#Snowflake-220"><span class="linenos">220</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><span id="Snowflake-221"><a href="#Snowflake-221"><span class="linenos">221</span></a> <span class="s2">&quot;dy&quot;</span><span class="p">:</span> <span class="s2">&quot;%w&quot;</span><span class="p">,</span> </span><span id="Snowflake-221"><a href="#Snowflake-221"><span class="linenos">221</span></a> <span class="s2">&quot;DY&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="Snowflake-222"><a href="#Snowflake-222"><span class="linenos">222</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><span id="Snowflake-222"><a href="#Snowflake-222"><span class="linenos">222</span></a> <span class="s2">&quot;dy&quot;</span><span class="p">:</span> <span class="s2">&quot;%w&quot;</span><span class="p">,</span>
</span><span id="Snowflake-223"><a href="#Snowflake-223"><span class="linenos">223</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><span id="Snowflake-223"><a href="#Snowflake-223"><span class="linenos">223</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><span id="Snowflake-224"><a href="#Snowflake-224"><span class="linenos">224</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><span id="Snowflake-224"><a href="#Snowflake-224"><span class="linenos">224</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><span id="Snowflake-225"><a href="#Snowflake-225"><span class="linenos">225</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><span id="Snowflake-225"><a href="#Snowflake-225"><span class="linenos">225</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><span id="Snowflake-226"><a href="#Snowflake-226"><span class="linenos">226</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><span id="Snowflake-226"><a href="#Snowflake-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><span id="Snowflake-227"><a href="#Snowflake-227"><span class="linenos">227</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><span id="Snowflake-227"><a href="#Snowflake-227"><span class="linenos">227</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><span id="Snowflake-228"><a href="#Snowflake-228"><span class="linenos">228</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><span id="Snowflake-228"><a href="#Snowflake-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><span id="Snowflake-229"><a href="#Snowflake-229"><span class="linenos">229</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><span id="Snowflake-229"><a href="#Snowflake-229"><span class="linenos">229</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><span id="Snowflake-230"><a href="#Snowflake-230"><span class="linenos">230</span></a> <span class="s2">&quot;FF&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><span id="Snowflake-230"><a href="#Snowflake-230"><span class="linenos">230</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><span id="Snowflake-231"><a href="#Snowflake-231"><span class="linenos">231</span></a> <span class="s2">&quot;ff&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><span id="Snowflake-231"><a href="#Snowflake-231"><span class="linenos">231</span></a> <span class="s2">&quot;FF&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><span id="Snowflake-232"><a href="#Snowflake-232"><span class="linenos">232</span></a> <span class="s2">&quot;FF6&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><span id="Snowflake-232"><a href="#Snowflake-232"><span class="linenos">232</span></a> <span class="s2">&quot;ff&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><span id="Snowflake-233"><a href="#Snowflake-233"><span class="linenos">233</span></a> <span class="s2">&quot;ff6&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><span id="Snowflake-233"><a href="#Snowflake-233"><span class="linenos">233</span></a> <span class="s2">&quot;FF6&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><span id="Snowflake-234"><a href="#Snowflake-234"><span class="linenos">234</span></a> <span class="p">}</span> </span><span id="Snowflake-234"><a href="#Snowflake-234"><span class="linenos">234</span></a> <span class="s2">&quot;ff6&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><span id="Snowflake-235"><a href="#Snowflake-235"><span class="linenos">235</span></a> </span><span id="Snowflake-235"><a href="#Snowflake-235"><span class="linenos">235</span></a> <span class="p">}</span>
</span><span id="Snowflake-236"><a href="#Snowflake-236"><span class="linenos">236</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="Snowflake-236"><a href="#Snowflake-236"><span class="linenos">236</span></a>
</span><span id="Snowflake-237"><a href="#Snowflake-237"><span class="linenos">237</span></a> <span class="n">IDENTIFY_PIVOT_STRINGS</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="Snowflake-237"><a href="#Snowflake-237"><span class="linenos">237</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="Snowflake-238"><a href="#Snowflake-238"><span class="linenos">238</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span> </span><span id="Snowflake-238"><a href="#Snowflake-238"><span class="linenos">238</span></a> <span class="n">IDENTIFY_PIVOT_STRINGS</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Snowflake-239"><a href="#Snowflake-239"><span class="linenos">239</span></a> </span><span id="Snowflake-239"><a href="#Snowflake-239"><span class="linenos">239</span></a>
</span><span id="Snowflake-240"><a href="#Snowflake-240"><span class="linenos">240</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Snowflake-240"><a href="#Snowflake-240"><span class="linenos">240</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Snowflake-241"><a href="#Snowflake-241"><span class="linenos">241</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="Snowflake-241"><a href="#Snowflake-241"><span class="linenos">241</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>
@ -1179,6 +1182,18 @@
</div>
<div id="Snowflake.SUPPORTS_USER_DEFINED_TYPES" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_USER_DEFINED_TYPES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Snowflake.SUPPORTS_USER_DEFINED_TYPES"></a>
</div> </div>
<div id="Snowflake.TIME_MAPPING" class="classattr"> <div id="Snowflake.TIME_MAPPING" class="classattr">
<div class="attr variable"> <div class="attr variable">
@ -1446,9 +1461,8 @@
</div> </div>
<a class="headerlink" href="#Snowflake.Parser"></a> <a class="headerlink" href="#Snowflake.Parser"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Parser-236"><a href="#Snowflake.Parser-236"><span class="linenos">236</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> <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Parser-237"><a href="#Snowflake.Parser-237"><span class="linenos">237</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="Snowflake.Parser-237"><a href="#Snowflake.Parser-237"><span class="linenos">237</span></a> <span class="n">IDENTIFY_PIVOT_STRINGS</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="Snowflake.Parser-238"><a href="#Snowflake.Parser-238"><span class="linenos">238</span></a> <span class="n">IDENTIFY_PIVOT_STRINGS</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="Snowflake.Parser-238"><a href="#Snowflake.Parser-238"><span class="linenos">238</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Snowflake.Parser-239"><a href="#Snowflake.Parser-239"><span class="linenos">239</span></a> </span><span id="Snowflake.Parser-239"><a href="#Snowflake.Parser-239"><span class="linenos">239</span></a>
</span><span id="Snowflake.Parser-240"><a href="#Snowflake.Parser-240"><span class="linenos">240</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Snowflake.Parser-240"><a href="#Snowflake.Parser-240"><span class="linenos">240</span></a> <span class="n">FUNCTIONS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Snowflake.Parser-241"><a href="#Snowflake.Parser-241"><span class="linenos">241</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="Snowflake.Parser-241"><a href="#Snowflake.Parser-241"><span class="linenos">241</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>
@ -1582,18 +1596,6 @@ Default: 3</li>
</div>
<div id="Snowflake.Parser.SUPPORTS_USER_DEFINED_TYPES" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_USER_DEFINED_TYPES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Snowflake.Parser.SUPPORTS_USER_DEFINED_TYPES"></a>
</div> </div>
<div id="Snowflake.Parser.FUNCTIONS" class="classattr"> <div id="Snowflake.Parser.FUNCTIONS" class="classattr">
<div class="attr variable"> <div class="attr variable">
@ -1638,7 +1640,7 @@ Default: 3</li>
<div class="attr variable"> <div class="attr variable">
<span class="name">TIMESTAMPS</span> = <span class="name">TIMESTAMPS</span> =
<input id="Snowflake.Parser.TIMESTAMPS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <input id="Snowflake.Parser.TIMESTAMPS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="Snowflake.Parser.TIMESTAMPS-view-value"></label><span class="default_value">{&lt;TokenType.TIMETZ: &#39;TIMETZ&#39;&gt;, &lt;TokenType.TIMESTAMPTZ: &#39;TIMESTAMPTZ&#39;&gt;, &lt;TokenType.TIMESTAMPLTZ: &#39;TIMESTAMPLTZ&#39;&gt;, &lt;TokenType.TIMESTAMP: &#39;TIMESTAMP&#39;&gt;}</span> <label class="view-value-button pdoc-button" for="Snowflake.Parser.TIMESTAMPS-view-value"></label><span class="default_value">{&lt;TokenType.TIMESTAMP: &#39;TIMESTAMP&#39;&gt;, &lt;TokenType.TIMESTAMPTZ: &#39;TIMESTAMPTZ&#39;&gt;, &lt;TokenType.TIMETZ: &#39;TIMETZ&#39;&gt;, &lt;TokenType.TIMESTAMPLTZ: &#39;TIMESTAMPLTZ&#39;&gt;}</span>
</div> </div>
@ -1710,6 +1712,18 @@ Default: 3</li>
</div>
<div id="Snowflake.Parser.SUPPORTS_USER_DEFINED_TYPES" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_USER_DEFINED_TYPES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Snowflake.Parser.SUPPORTS_USER_DEFINED_TYPES"></a>
</div> </div>
<div id="Snowflake.Parser.NULL_ORDERING" class="classattr"> <div id="Snowflake.Parser.NULL_ORDERING" class="classattr">
<div class="attr variable"> <div class="attr variable">
@ -1845,6 +1859,7 @@ Default: 3</li>
<dd id="Snowflake.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd> <dd id="Snowflake.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd>
<dd id="Snowflake.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd> <dd id="Snowflake.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd>
<dd id="Snowflake.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd> <dd id="Snowflake.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd>
<dd id="Snowflake.Parser.FETCH_TOKENS" class="variable"><a href="../parser.html#Parser.FETCH_TOKENS">FETCH_TOKENS</a></dd>
<dd id="Snowflake.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd> <dd id="Snowflake.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd>
<dd id="Snowflake.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd> <dd id="Snowflake.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd>
<dd id="Snowflake.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd> <dd id="Snowflake.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd>
@ -2017,7 +2032,7 @@ Default: 3</li>
<div id="Snowflake.Tokenizer.COMMANDS" class="classattr"> <div id="Snowflake.Tokenizer.COMMANDS" class="classattr">
<div class="attr variable"> <div class="attr variable">
<span class="name">COMMANDS</span> = <span class="name">COMMANDS</span> =
<span class="default_value">{&lt;TokenType.FETCH: &#39;FETCH&#39;&gt;, &lt;TokenType.COMMAND: &#39;COMMAND&#39;&gt;, &lt;TokenType.EXECUTE: &#39;EXECUTE&#39;&gt;}</span> <span class="default_value">{&lt;TokenType.COMMAND: &#39;COMMAND&#39;&gt;, &lt;TokenType.FETCH: &#39;FETCH&#39;&gt;, &lt;TokenType.EXECUTE: &#39;EXECUTE&#39;&gt;}</span>
</div> </div>
@ -2571,26 +2586,26 @@ Default: True</li>
</div> </div>
<a class="headerlink" href="#Snowflake.Generator.can_identify"></a> <a class="headerlink" href="#Snowflake.Generator.can_identify"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator.can_identify-257"><a href="#Snowflake.Generator.can_identify-257"><span class="linenos">257</span></a> <span class="nd">@classmethod</span> <div class="pdoc-code codehilite"><pre><span></span><span id="Snowflake.Generator.can_identify-260"><a href="#Snowflake.Generator.can_identify-260"><span class="linenos">260</span></a> <span class="nd">@classmethod</span>
</span><span id="Snowflake.Generator.can_identify-258"><a href="#Snowflake.Generator.can_identify-258"><span class="linenos">258</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="Snowflake.Generator.can_identify-261"><a href="#Snowflake.Generator.can_identify-261"><span class="linenos">261</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="Snowflake.Generator.can_identify-259"><a href="#Snowflake.Generator.can_identify-259"><span class="linenos">259</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="Snowflake.Generator.can_identify-262"><a href="#Snowflake.Generator.can_identify-262"><span class="linenos">262</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="Snowflake.Generator.can_identify-260"><a href="#Snowflake.Generator.can_identify-260"><span class="linenos">260</span></a> </span><span id="Snowflake.Generator.can_identify-263"><a href="#Snowflake.Generator.can_identify-263"><span class="linenos">263</span></a>
</span><span id="Snowflake.Generator.can_identify-261"><a href="#Snowflake.Generator.can_identify-261"><span class="linenos">261</span></a><span class="sd"> Args:</span> </span><span id="Snowflake.Generator.can_identify-264"><a href="#Snowflake.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> Args:</span>
</span><span id="Snowflake.Generator.can_identify-262"><a href="#Snowflake.Generator.can_identify-262"><span class="linenos">262</span></a><span class="sd"> text: The text to check.</span> </span><span id="Snowflake.Generator.can_identify-265"><a href="#Snowflake.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> text: The text to check.</span>
</span><span id="Snowflake.Generator.can_identify-263"><a href="#Snowflake.Generator.can_identify-263"><span class="linenos">263</span></a><span class="sd"> identify:</span> </span><span id="Snowflake.Generator.can_identify-266"><a href="#Snowflake.Generator.can_identify-266"><span class="linenos">266</span></a><span class="sd"> identify:</span>
</span><span id="Snowflake.Generator.can_identify-264"><a href="#Snowflake.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span> </span><span id="Snowflake.Generator.can_identify-267"><a href="#Snowflake.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span>
</span><span id="Snowflake.Generator.can_identify-265"><a href="#Snowflake.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span> </span><span id="Snowflake.Generator.can_identify-268"><a href="#Snowflake.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span>
</span><span id="Snowflake.Generator.can_identify-266"><a href="#Snowflake.Generator.can_identify-266"><span class="linenos">266</span></a> </span><span id="Snowflake.Generator.can_identify-269"><a href="#Snowflake.Generator.can_identify-269"><span class="linenos">269</span></a>
</span><span id="Snowflake.Generator.can_identify-267"><a href="#Snowflake.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> Returns:</span> </span><span id="Snowflake.Generator.can_identify-270"><a href="#Snowflake.Generator.can_identify-270"><span class="linenos">270</span></a><span class="sd"> Returns:</span>
</span><span id="Snowflake.Generator.can_identify-268"><a href="#Snowflake.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> Whether or not the given text can be identified.</span> </span><span id="Snowflake.Generator.can_identify-271"><a href="#Snowflake.Generator.can_identify-271"><span class="linenos">271</span></a><span class="sd"> Whether or not the given text can be identified.</span>
</span><span id="Snowflake.Generator.can_identify-269"><a href="#Snowflake.Generator.can_identify-269"><span class="linenos">269</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="Snowflake.Generator.can_identify-272"><a href="#Snowflake.Generator.can_identify-272"><span class="linenos">272</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Snowflake.Generator.can_identify-270"><a href="#Snowflake.Generator.can_identify-270"><span class="linenos">270</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="Snowflake.Generator.can_identify-273"><a href="#Snowflake.Generator.can_identify-273"><span class="linenos">273</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="Snowflake.Generator.can_identify-271"><a href="#Snowflake.Generator.can_identify-271"><span class="linenos">271</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="Snowflake.Generator.can_identify-274"><a href="#Snowflake.Generator.can_identify-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="kc">True</span>
</span><span id="Snowflake.Generator.can_identify-272"><a href="#Snowflake.Generator.can_identify-272"><span class="linenos">272</span></a>
</span><span id="Snowflake.Generator.can_identify-273"><a href="#Snowflake.Generator.can_identify-273"><span class="linenos">273</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="Snowflake.Generator.can_identify-274"><a href="#Snowflake.Generator.can_identify-274"><span class="linenos">274</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="Snowflake.Generator.can_identify-275"><a href="#Snowflake.Generator.can_identify-275"><span class="linenos">275</span></a> </span><span id="Snowflake.Generator.can_identify-275"><a href="#Snowflake.Generator.can_identify-275"><span class="linenos">275</span></a>
</span><span id="Snowflake.Generator.can_identify-276"><a href="#Snowflake.Generator.can_identify-276"><span class="linenos">276</span></a> <span class="k">return</span> <span class="kc">False</span> </span><span id="Snowflake.Generator.can_identify-276"><a href="#Snowflake.Generator.can_identify-276"><span class="linenos">276</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="Snowflake.Generator.can_identify-277"><a href="#Snowflake.Generator.can_identify-277"><span class="linenos">277</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="Snowflake.Generator.can_identify-278"><a href="#Snowflake.Generator.can_identify-278"><span class="linenos">278</span></a>
</span><span id="Snowflake.Generator.can_identify-279"><a href="#Snowflake.Generator.can_identify-279"><span class="linenos">279</span></a> <span class="k">return</span> <span class="kc">False</span>
</span></pre></div> </span></pre></div>

View file

@ -581,6 +581,7 @@
<div><dt><a href="hive.html#Hive">sqlglot.dialects.hive.Hive</a></dt> <div><dt><a href="hive.html#Hive">sqlglot.dialects.hive.Hive</a></dt>
<dd id="Spark.ALIAS_POST_TABLESAMPLE" class="variable"><a href="hive.html#Hive.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd> <dd id="Spark.ALIAS_POST_TABLESAMPLE" class="variable"><a href="hive.html#Hive.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd>
<dd id="Spark.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="hive.html#Hive.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd> <dd id="Spark.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="hive.html#Hive.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd>
<dd id="Spark.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="hive.html#Hive.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Spark.RESOLVES_IDENTIFIERS_AS_UPPERCASE" class="variable"><a href="hive.html#Hive.RESOLVES_IDENTIFIERS_AS_UPPERCASE">RESOLVES_IDENTIFIERS_AS_UPPERCASE</a></dd> <dd id="Spark.RESOLVES_IDENTIFIERS_AS_UPPERCASE" class="variable"><a href="hive.html#Hive.RESOLVES_IDENTIFIERS_AS_UPPERCASE">RESOLVES_IDENTIFIERS_AS_UPPERCASE</a></dd>
<dd id="Spark.TIME_MAPPING" class="variable"><a href="hive.html#Hive.TIME_MAPPING">TIME_MAPPING</a></dd> <dd id="Spark.TIME_MAPPING" class="variable"><a href="hive.html#Hive.TIME_MAPPING">TIME_MAPPING</a></dd>
<dd id="Spark.DATE_FORMAT" class="variable"><a href="hive.html#Hive.DATE_FORMAT">DATE_FORMAT</a></dd> <dd id="Spark.DATE_FORMAT" class="variable"><a href="hive.html#Hive.DATE_FORMAT">DATE_FORMAT</a></dd>
@ -881,6 +882,7 @@ Default: 3</li>
<dd id="Spark.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd> <dd id="Spark.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd>
<dd id="Spark.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd> <dd id="Spark.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd>
<dd id="Spark.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd> <dd id="Spark.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd>
<dd id="Spark.Parser.FETCH_TOKENS" class="variable"><a href="../parser.html#Parser.FETCH_TOKENS">FETCH_TOKENS</a></dd>
<dd id="Spark.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd> <dd id="Spark.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd>
<dd id="Spark.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd> <dd id="Spark.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd>
<dd id="Spark.Parser.CONCAT_NULL_OUTPUTS_STRING" class="variable"><a href="../parser.html#Parser.CONCAT_NULL_OUTPUTS_STRING">CONCAT_NULL_OUTPUTS_STRING</a></dd> <dd id="Spark.Parser.CONCAT_NULL_OUTPUTS_STRING" class="variable"><a href="../parser.html#Parser.CONCAT_NULL_OUTPUTS_STRING">CONCAT_NULL_OUTPUTS_STRING</a></dd>
@ -912,10 +914,10 @@ Default: 3</li>
<div><dt><a href="hive.html#Hive.Parser">sqlglot.dialects.hive.Hive.Parser</a></dt> <div><dt><a href="hive.html#Hive.Parser">sqlglot.dialects.hive.Hive.Parser</a></dt>
<dd id="Spark.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="hive.html#Hive.Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd> <dd id="Spark.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="hive.html#Hive.Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd>
<dd id="Spark.Parser.STRICT_CAST" class="variable"><a href="hive.html#Hive.Parser.STRICT_CAST">STRICT_CAST</a></dd> <dd id="Spark.Parser.STRICT_CAST" class="variable"><a href="hive.html#Hive.Parser.STRICT_CAST">STRICT_CAST</a></dd>
<dd id="Spark.Parser.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="hive.html#Hive.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Spark.Parser.NO_PAREN_FUNCTION_PARSERS" class="variable"><a href="hive.html#Hive.Parser.NO_PAREN_FUNCTION_PARSERS">NO_PAREN_FUNCTION_PARSERS</a></dd> <dd id="Spark.Parser.NO_PAREN_FUNCTION_PARSERS" class="variable"><a href="hive.html#Hive.Parser.NO_PAREN_FUNCTION_PARSERS">NO_PAREN_FUNCTION_PARSERS</a></dd>
<dd id="Spark.Parser.PROPERTY_PARSERS" class="variable"><a href="hive.html#Hive.Parser.PROPERTY_PARSERS">PROPERTY_PARSERS</a></dd> <dd id="Spark.Parser.PROPERTY_PARSERS" class="variable"><a href="hive.html#Hive.Parser.PROPERTY_PARSERS">PROPERTY_PARSERS</a></dd>
<dd id="Spark.Parser.ALIAS_POST_TABLESAMPLE" class="variable"><a href="hive.html#Hive.Parser.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd> <dd id="Spark.Parser.ALIAS_POST_TABLESAMPLE" class="variable"><a href="hive.html#Hive.Parser.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd>
<dd id="Spark.Parser.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="hive.html#Hive.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Spark.Parser.TIME_MAPPING" class="variable"><a href="hive.html#Hive.Parser.TIME_MAPPING">TIME_MAPPING</a></dd> <dd id="Spark.Parser.TIME_MAPPING" class="variable"><a href="hive.html#Hive.Parser.TIME_MAPPING">TIME_MAPPING</a></dd>
</div> </div>
@ -1127,26 +1129,26 @@ Default: True</li>
</div> </div>
<a class="headerlink" href="#Spark.Generator.can_identify"></a> <a class="headerlink" href="#Spark.Generator.can_identify"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Spark.Generator.can_identify-257"><a href="#Spark.Generator.can_identify-257"><span class="linenos">257</span></a> <span class="nd">@classmethod</span> <div class="pdoc-code codehilite"><pre><span></span><span id="Spark.Generator.can_identify-260"><a href="#Spark.Generator.can_identify-260"><span class="linenos">260</span></a> <span class="nd">@classmethod</span>
</span><span id="Spark.Generator.can_identify-258"><a href="#Spark.Generator.can_identify-258"><span class="linenos">258</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="Spark.Generator.can_identify-261"><a href="#Spark.Generator.can_identify-261"><span class="linenos">261</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="Spark.Generator.can_identify-259"><a href="#Spark.Generator.can_identify-259"><span class="linenos">259</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="Spark.Generator.can_identify-262"><a href="#Spark.Generator.can_identify-262"><span class="linenos">262</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="Spark.Generator.can_identify-260"><a href="#Spark.Generator.can_identify-260"><span class="linenos">260</span></a> </span><span id="Spark.Generator.can_identify-263"><a href="#Spark.Generator.can_identify-263"><span class="linenos">263</span></a>
</span><span id="Spark.Generator.can_identify-261"><a href="#Spark.Generator.can_identify-261"><span class="linenos">261</span></a><span class="sd"> Args:</span> </span><span id="Spark.Generator.can_identify-264"><a href="#Spark.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> Args:</span>
</span><span id="Spark.Generator.can_identify-262"><a href="#Spark.Generator.can_identify-262"><span class="linenos">262</span></a><span class="sd"> text: The text to check.</span> </span><span id="Spark.Generator.can_identify-265"><a href="#Spark.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> text: The text to check.</span>
</span><span id="Spark.Generator.can_identify-263"><a href="#Spark.Generator.can_identify-263"><span class="linenos">263</span></a><span class="sd"> identify:</span> </span><span id="Spark.Generator.can_identify-266"><a href="#Spark.Generator.can_identify-266"><span class="linenos">266</span></a><span class="sd"> identify:</span>
</span><span id="Spark.Generator.can_identify-264"><a href="#Spark.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span> </span><span id="Spark.Generator.can_identify-267"><a href="#Spark.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span>
</span><span id="Spark.Generator.can_identify-265"><a href="#Spark.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span> </span><span id="Spark.Generator.can_identify-268"><a href="#Spark.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span>
</span><span id="Spark.Generator.can_identify-266"><a href="#Spark.Generator.can_identify-266"><span class="linenos">266</span></a> </span><span id="Spark.Generator.can_identify-269"><a href="#Spark.Generator.can_identify-269"><span class="linenos">269</span></a>
</span><span id="Spark.Generator.can_identify-267"><a href="#Spark.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> Returns:</span> </span><span id="Spark.Generator.can_identify-270"><a href="#Spark.Generator.can_identify-270"><span class="linenos">270</span></a><span class="sd"> Returns:</span>
</span><span id="Spark.Generator.can_identify-268"><a href="#Spark.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> Whether or not the given text can be identified.</span> </span><span id="Spark.Generator.can_identify-271"><a href="#Spark.Generator.can_identify-271"><span class="linenos">271</span></a><span class="sd"> Whether or not the given text can be identified.</span>
</span><span id="Spark.Generator.can_identify-269"><a href="#Spark.Generator.can_identify-269"><span class="linenos">269</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="Spark.Generator.can_identify-272"><a href="#Spark.Generator.can_identify-272"><span class="linenos">272</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Spark.Generator.can_identify-270"><a href="#Spark.Generator.can_identify-270"><span class="linenos">270</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="Spark.Generator.can_identify-273"><a href="#Spark.Generator.can_identify-273"><span class="linenos">273</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="Spark.Generator.can_identify-271"><a href="#Spark.Generator.can_identify-271"><span class="linenos">271</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="Spark.Generator.can_identify-274"><a href="#Spark.Generator.can_identify-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="kc">True</span>
</span><span id="Spark.Generator.can_identify-272"><a href="#Spark.Generator.can_identify-272"><span class="linenos">272</span></a>
</span><span id="Spark.Generator.can_identify-273"><a href="#Spark.Generator.can_identify-273"><span class="linenos">273</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="Spark.Generator.can_identify-274"><a href="#Spark.Generator.can_identify-274"><span class="linenos">274</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="Spark.Generator.can_identify-275"><a href="#Spark.Generator.can_identify-275"><span class="linenos">275</span></a> </span><span id="Spark.Generator.can_identify-275"><a href="#Spark.Generator.can_identify-275"><span class="linenos">275</span></a>
</span><span id="Spark.Generator.can_identify-276"><a href="#Spark.Generator.can_identify-276"><span class="linenos">276</span></a> <span class="k">return</span> <span class="kc">False</span> </span><span id="Spark.Generator.can_identify-276"><a href="#Spark.Generator.can_identify-276"><span class="linenos">276</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="Spark.Generator.can_identify-277"><a href="#Spark.Generator.can_identify-277"><span class="linenos">277</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="Spark.Generator.can_identify-278"><a href="#Spark.Generator.can_identify-278"><span class="linenos">278</span></a>
</span><span id="Spark.Generator.can_identify-279"><a href="#Spark.Generator.can_identify-279"><span class="linenos">279</span></a> <span class="k">return</span> <span class="kc">False</span>
</span></pre></div> </span></pre></div>

View file

@ -858,6 +858,7 @@
<div><dt><a href="hive.html#Hive">sqlglot.dialects.hive.Hive</a></dt> <div><dt><a href="hive.html#Hive">sqlglot.dialects.hive.Hive</a></dt>
<dd id="Spark2.ALIAS_POST_TABLESAMPLE" class="variable"><a href="hive.html#Hive.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd> <dd id="Spark2.ALIAS_POST_TABLESAMPLE" class="variable"><a href="hive.html#Hive.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd>
<dd id="Spark2.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="hive.html#Hive.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd> <dd id="Spark2.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="hive.html#Hive.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd>
<dd id="Spark2.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="hive.html#Hive.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Spark2.RESOLVES_IDENTIFIERS_AS_UPPERCASE" class="variable"><a href="hive.html#Hive.RESOLVES_IDENTIFIERS_AS_UPPERCASE">RESOLVES_IDENTIFIERS_AS_UPPERCASE</a></dd> <dd id="Spark2.RESOLVES_IDENTIFIERS_AS_UPPERCASE" class="variable"><a href="hive.html#Hive.RESOLVES_IDENTIFIERS_AS_UPPERCASE">RESOLVES_IDENTIFIERS_AS_UPPERCASE</a></dd>
<dd id="Spark2.TIME_MAPPING" class="variable"><a href="hive.html#Hive.TIME_MAPPING">TIME_MAPPING</a></dd> <dd id="Spark2.TIME_MAPPING" class="variable"><a href="hive.html#Hive.TIME_MAPPING">TIME_MAPPING</a></dd>
<dd id="Spark2.DATE_FORMAT" class="variable"><a href="hive.html#Hive.DATE_FORMAT">DATE_FORMAT</a></dd> <dd id="Spark2.DATE_FORMAT" class="variable"><a href="hive.html#Hive.DATE_FORMAT">DATE_FORMAT</a></dd>
@ -1130,6 +1131,7 @@ Default: 3</li>
<dd id="Spark2.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd> <dd id="Spark2.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd>
<dd id="Spark2.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd> <dd id="Spark2.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd>
<dd id="Spark2.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd> <dd id="Spark2.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd>
<dd id="Spark2.Parser.FETCH_TOKENS" class="variable"><a href="../parser.html#Parser.FETCH_TOKENS">FETCH_TOKENS</a></dd>
<dd id="Spark2.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd> <dd id="Spark2.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd>
<dd id="Spark2.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd> <dd id="Spark2.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd>
<dd id="Spark2.Parser.CONCAT_NULL_OUTPUTS_STRING" class="variable"><a href="../parser.html#Parser.CONCAT_NULL_OUTPUTS_STRING">CONCAT_NULL_OUTPUTS_STRING</a></dd> <dd id="Spark2.Parser.CONCAT_NULL_OUTPUTS_STRING" class="variable"><a href="../parser.html#Parser.CONCAT_NULL_OUTPUTS_STRING">CONCAT_NULL_OUTPUTS_STRING</a></dd>
@ -1161,10 +1163,10 @@ Default: 3</li>
<div><dt><a href="hive.html#Hive.Parser">sqlglot.dialects.hive.Hive.Parser</a></dt> <div><dt><a href="hive.html#Hive.Parser">sqlglot.dialects.hive.Hive.Parser</a></dt>
<dd id="Spark2.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="hive.html#Hive.Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd> <dd id="Spark2.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="hive.html#Hive.Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd>
<dd id="Spark2.Parser.STRICT_CAST" class="variable"><a href="hive.html#Hive.Parser.STRICT_CAST">STRICT_CAST</a></dd> <dd id="Spark2.Parser.STRICT_CAST" class="variable"><a href="hive.html#Hive.Parser.STRICT_CAST">STRICT_CAST</a></dd>
<dd id="Spark2.Parser.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="hive.html#Hive.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Spark2.Parser.NO_PAREN_FUNCTION_PARSERS" class="variable"><a href="hive.html#Hive.Parser.NO_PAREN_FUNCTION_PARSERS">NO_PAREN_FUNCTION_PARSERS</a></dd> <dd id="Spark2.Parser.NO_PAREN_FUNCTION_PARSERS" class="variable"><a href="hive.html#Hive.Parser.NO_PAREN_FUNCTION_PARSERS">NO_PAREN_FUNCTION_PARSERS</a></dd>
<dd id="Spark2.Parser.PROPERTY_PARSERS" class="variable"><a href="hive.html#Hive.Parser.PROPERTY_PARSERS">PROPERTY_PARSERS</a></dd> <dd id="Spark2.Parser.PROPERTY_PARSERS" class="variable"><a href="hive.html#Hive.Parser.PROPERTY_PARSERS">PROPERTY_PARSERS</a></dd>
<dd id="Spark2.Parser.ALIAS_POST_TABLESAMPLE" class="variable"><a href="hive.html#Hive.Parser.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd> <dd id="Spark2.Parser.ALIAS_POST_TABLESAMPLE" class="variable"><a href="hive.html#Hive.Parser.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd>
<dd id="Spark2.Parser.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="hive.html#Hive.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Spark2.Parser.TIME_MAPPING" class="variable"><a href="hive.html#Hive.Parser.TIME_MAPPING">TIME_MAPPING</a></dd> <dd id="Spark2.Parser.TIME_MAPPING" class="variable"><a href="hive.html#Hive.Parser.TIME_MAPPING">TIME_MAPPING</a></dd>
</div> </div>
@ -1478,26 +1480,26 @@ Default: True</li>
</div> </div>
<a class="headerlink" href="#Spark2.Generator.can_identify"></a> <a class="headerlink" href="#Spark2.Generator.can_identify"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Spark2.Generator.can_identify-257"><a href="#Spark2.Generator.can_identify-257"><span class="linenos">257</span></a> <span class="nd">@classmethod</span> <div class="pdoc-code codehilite"><pre><span></span><span id="Spark2.Generator.can_identify-260"><a href="#Spark2.Generator.can_identify-260"><span class="linenos">260</span></a> <span class="nd">@classmethod</span>
</span><span id="Spark2.Generator.can_identify-258"><a href="#Spark2.Generator.can_identify-258"><span class="linenos">258</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="Spark2.Generator.can_identify-261"><a href="#Spark2.Generator.can_identify-261"><span class="linenos">261</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="Spark2.Generator.can_identify-259"><a href="#Spark2.Generator.can_identify-259"><span class="linenos">259</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="Spark2.Generator.can_identify-262"><a href="#Spark2.Generator.can_identify-262"><span class="linenos">262</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="Spark2.Generator.can_identify-260"><a href="#Spark2.Generator.can_identify-260"><span class="linenos">260</span></a> </span><span id="Spark2.Generator.can_identify-263"><a href="#Spark2.Generator.can_identify-263"><span class="linenos">263</span></a>
</span><span id="Spark2.Generator.can_identify-261"><a href="#Spark2.Generator.can_identify-261"><span class="linenos">261</span></a><span class="sd"> Args:</span> </span><span id="Spark2.Generator.can_identify-264"><a href="#Spark2.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> Args:</span>
</span><span id="Spark2.Generator.can_identify-262"><a href="#Spark2.Generator.can_identify-262"><span class="linenos">262</span></a><span class="sd"> text: The text to check.</span> </span><span id="Spark2.Generator.can_identify-265"><a href="#Spark2.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> text: The text to check.</span>
</span><span id="Spark2.Generator.can_identify-263"><a href="#Spark2.Generator.can_identify-263"><span class="linenos">263</span></a><span class="sd"> identify:</span> </span><span id="Spark2.Generator.can_identify-266"><a href="#Spark2.Generator.can_identify-266"><span class="linenos">266</span></a><span class="sd"> identify:</span>
</span><span id="Spark2.Generator.can_identify-264"><a href="#Spark2.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span> </span><span id="Spark2.Generator.can_identify-267"><a href="#Spark2.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span>
</span><span id="Spark2.Generator.can_identify-265"><a href="#Spark2.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span> </span><span id="Spark2.Generator.can_identify-268"><a href="#Spark2.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span>
</span><span id="Spark2.Generator.can_identify-266"><a href="#Spark2.Generator.can_identify-266"><span class="linenos">266</span></a> </span><span id="Spark2.Generator.can_identify-269"><a href="#Spark2.Generator.can_identify-269"><span class="linenos">269</span></a>
</span><span id="Spark2.Generator.can_identify-267"><a href="#Spark2.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> Returns:</span> </span><span id="Spark2.Generator.can_identify-270"><a href="#Spark2.Generator.can_identify-270"><span class="linenos">270</span></a><span class="sd"> Returns:</span>
</span><span id="Spark2.Generator.can_identify-268"><a href="#Spark2.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> Whether or not the given text can be identified.</span> </span><span id="Spark2.Generator.can_identify-271"><a href="#Spark2.Generator.can_identify-271"><span class="linenos">271</span></a><span class="sd"> Whether or not the given text can be identified.</span>
</span><span id="Spark2.Generator.can_identify-269"><a href="#Spark2.Generator.can_identify-269"><span class="linenos">269</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="Spark2.Generator.can_identify-272"><a href="#Spark2.Generator.can_identify-272"><span class="linenos">272</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Spark2.Generator.can_identify-270"><a href="#Spark2.Generator.can_identify-270"><span class="linenos">270</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="Spark2.Generator.can_identify-273"><a href="#Spark2.Generator.can_identify-273"><span class="linenos">273</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="Spark2.Generator.can_identify-271"><a href="#Spark2.Generator.can_identify-271"><span class="linenos">271</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="Spark2.Generator.can_identify-274"><a href="#Spark2.Generator.can_identify-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="kc">True</span>
</span><span id="Spark2.Generator.can_identify-272"><a href="#Spark2.Generator.can_identify-272"><span class="linenos">272</span></a>
</span><span id="Spark2.Generator.can_identify-273"><a href="#Spark2.Generator.can_identify-273"><span class="linenos">273</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="Spark2.Generator.can_identify-274"><a href="#Spark2.Generator.can_identify-274"><span class="linenos">274</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="Spark2.Generator.can_identify-275"><a href="#Spark2.Generator.can_identify-275"><span class="linenos">275</span></a> </span><span id="Spark2.Generator.can_identify-275"><a href="#Spark2.Generator.can_identify-275"><span class="linenos">275</span></a>
</span><span id="Spark2.Generator.can_identify-276"><a href="#Spark2.Generator.can_identify-276"><span class="linenos">276</span></a> <span class="k">return</span> <span class="kc">False</span> </span><span id="Spark2.Generator.can_identify-276"><a href="#Spark2.Generator.can_identify-276"><span class="linenos">276</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="Spark2.Generator.can_identify-277"><a href="#Spark2.Generator.can_identify-277"><span class="linenos">277</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="Spark2.Generator.can_identify-278"><a href="#Spark2.Generator.can_identify-278"><span class="linenos">278</span></a>
</span><span id="Spark2.Generator.can_identify-279"><a href="#Spark2.Generator.can_identify-279"><span class="linenos">279</span></a> <span class="k">return</span> <span class="kc">False</span>
</span></pre></div> </span></pre></div>

View file

@ -831,6 +831,7 @@
<dd id="SQLite.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="dialect.html#Dialect.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd> <dd id="SQLite.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="dialect.html#Dialect.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd>
<dd id="SQLite.DPIPE_IS_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.DPIPE_IS_STRING_CONCAT">DPIPE_IS_STRING_CONCAT</a></dd> <dd id="SQLite.DPIPE_IS_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.DPIPE_IS_STRING_CONCAT">DPIPE_IS_STRING_CONCAT</a></dd>
<dd id="SQLite.STRICT_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd> <dd id="SQLite.STRICT_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd>
<dd id="SQLite.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="dialect.html#Dialect.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="SQLite.NORMALIZE_FUNCTIONS" class="variable"><a href="dialect.html#Dialect.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd> <dd id="SQLite.NORMALIZE_FUNCTIONS" class="variable"><a href="dialect.html#Dialect.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd>
<dd id="SQLite.NULL_ORDERING" class="variable"><a href="dialect.html#Dialect.NULL_ORDERING">NULL_ORDERING</a></dd> <dd id="SQLite.NULL_ORDERING" class="variable"><a href="dialect.html#Dialect.NULL_ORDERING">NULL_ORDERING</a></dd>
<dd id="SQLite.DATE_FORMAT" class="variable"><a href="dialect.html#Dialect.DATE_FORMAT">DATE_FORMAT</a></dd> <dd id="SQLite.DATE_FORMAT" class="variable"><a href="dialect.html#Dialect.DATE_FORMAT">DATE_FORMAT</a></dd>
@ -1107,6 +1108,7 @@ Default: 3</li>
<dd id="SQLite.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd> <dd id="SQLite.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd>
<dd id="SQLite.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd> <dd id="SQLite.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd>
<dd id="SQLite.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd> <dd id="SQLite.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd>
<dd id="SQLite.Parser.FETCH_TOKENS" class="variable"><a href="../parser.html#Parser.FETCH_TOKENS">FETCH_TOKENS</a></dd>
<dd id="SQLite.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd> <dd id="SQLite.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd>
<dd id="SQLite.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd> <dd id="SQLite.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd>
<dd id="SQLite.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd> <dd id="SQLite.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd>
@ -1115,13 +1117,13 @@ Default: 3</li>
<dd id="SQLite.Parser.IDENTIFY_PIVOT_STRINGS" class="variable"><a href="../parser.html#Parser.IDENTIFY_PIVOT_STRINGS">IDENTIFY_PIVOT_STRINGS</a></dd> <dd id="SQLite.Parser.IDENTIFY_PIVOT_STRINGS" class="variable"><a href="../parser.html#Parser.IDENTIFY_PIVOT_STRINGS">IDENTIFY_PIVOT_STRINGS</a></dd>
<dd id="SQLite.Parser.LOG_BASE_FIRST" class="variable"><a href="../parser.html#Parser.LOG_BASE_FIRST">LOG_BASE_FIRST</a></dd> <dd id="SQLite.Parser.LOG_BASE_FIRST" class="variable"><a href="../parser.html#Parser.LOG_BASE_FIRST">LOG_BASE_FIRST</a></dd>
<dd id="SQLite.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="../parser.html#Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd> <dd id="SQLite.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="../parser.html#Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd>
<dd id="SQLite.Parser.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="../parser.html#Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="SQLite.Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD" class="variable"><a href="../parser.html#Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD">ALTER_TABLE_ADD_COLUMN_KEYWORD</a></dd> <dd id="SQLite.Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD" class="variable"><a href="../parser.html#Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD">ALTER_TABLE_ADD_COLUMN_KEYWORD</a></dd>
<dd id="SQLite.Parser.TABLESAMPLE_CSV" class="variable"><a href="../parser.html#Parser.TABLESAMPLE_CSV">TABLESAMPLE_CSV</a></dd> <dd id="SQLite.Parser.TABLESAMPLE_CSV" class="variable"><a href="../parser.html#Parser.TABLESAMPLE_CSV">TABLESAMPLE_CSV</a></dd>
<dd id="SQLite.Parser.INDEX_OFFSET" class="variable"><a href="../parser.html#Parser.INDEX_OFFSET">INDEX_OFFSET</a></dd> <dd id="SQLite.Parser.INDEX_OFFSET" class="variable"><a href="../parser.html#Parser.INDEX_OFFSET">INDEX_OFFSET</a></dd>
<dd id="SQLite.Parser.UNNEST_COLUMN_ONLY" class="variable"><a href="../parser.html#Parser.UNNEST_COLUMN_ONLY">UNNEST_COLUMN_ONLY</a></dd> <dd id="SQLite.Parser.UNNEST_COLUMN_ONLY" class="variable"><a href="../parser.html#Parser.UNNEST_COLUMN_ONLY">UNNEST_COLUMN_ONLY</a></dd>
<dd id="SQLite.Parser.ALIAS_POST_TABLESAMPLE" class="variable"><a href="../parser.html#Parser.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd> <dd id="SQLite.Parser.ALIAS_POST_TABLESAMPLE" class="variable"><a href="../parser.html#Parser.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd>
<dd id="SQLite.Parser.STRICT_STRING_CONCAT" class="variable"><a href="../parser.html#Parser.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd> <dd id="SQLite.Parser.STRICT_STRING_CONCAT" class="variable"><a href="../parser.html#Parser.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd>
<dd id="SQLite.Parser.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="../parser.html#Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="SQLite.Parser.NORMALIZE_FUNCTIONS" class="variable"><a href="../parser.html#Parser.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd> <dd id="SQLite.Parser.NORMALIZE_FUNCTIONS" class="variable"><a href="../parser.html#Parser.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd>
<dd id="SQLite.Parser.NULL_ORDERING" class="variable"><a href="../parser.html#Parser.NULL_ORDERING">NULL_ORDERING</a></dd> <dd id="SQLite.Parser.NULL_ORDERING" class="variable"><a href="../parser.html#Parser.NULL_ORDERING">NULL_ORDERING</a></dd>
<dd id="SQLite.Parser.FORMAT_MAPPING" class="variable"><a href="../parser.html#Parser.FORMAT_MAPPING">FORMAT_MAPPING</a></dd> <dd id="SQLite.Parser.FORMAT_MAPPING" class="variable"><a href="../parser.html#Parser.FORMAT_MAPPING">FORMAT_MAPPING</a></dd>
@ -1623,26 +1625,26 @@ Default: True</li>
</div> </div>
<a class="headerlink" href="#SQLite.Generator.can_identify"></a> <a class="headerlink" href="#SQLite.Generator.can_identify"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="SQLite.Generator.can_identify-257"><a href="#SQLite.Generator.can_identify-257"><span class="linenos">257</span></a> <span class="nd">@classmethod</span> <div class="pdoc-code codehilite"><pre><span></span><span id="SQLite.Generator.can_identify-260"><a href="#SQLite.Generator.can_identify-260"><span class="linenos">260</span></a> <span class="nd">@classmethod</span>
</span><span id="SQLite.Generator.can_identify-258"><a href="#SQLite.Generator.can_identify-258"><span class="linenos">258</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="SQLite.Generator.can_identify-261"><a href="#SQLite.Generator.can_identify-261"><span class="linenos">261</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="SQLite.Generator.can_identify-259"><a href="#SQLite.Generator.can_identify-259"><span class="linenos">259</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="SQLite.Generator.can_identify-262"><a href="#SQLite.Generator.can_identify-262"><span class="linenos">262</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="SQLite.Generator.can_identify-260"><a href="#SQLite.Generator.can_identify-260"><span class="linenos">260</span></a> </span><span id="SQLite.Generator.can_identify-263"><a href="#SQLite.Generator.can_identify-263"><span class="linenos">263</span></a>
</span><span id="SQLite.Generator.can_identify-261"><a href="#SQLite.Generator.can_identify-261"><span class="linenos">261</span></a><span class="sd"> Args:</span> </span><span id="SQLite.Generator.can_identify-264"><a href="#SQLite.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> Args:</span>
</span><span id="SQLite.Generator.can_identify-262"><a href="#SQLite.Generator.can_identify-262"><span class="linenos">262</span></a><span class="sd"> text: The text to check.</span> </span><span id="SQLite.Generator.can_identify-265"><a href="#SQLite.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> text: The text to check.</span>
</span><span id="SQLite.Generator.can_identify-263"><a href="#SQLite.Generator.can_identify-263"><span class="linenos">263</span></a><span class="sd"> identify:</span> </span><span id="SQLite.Generator.can_identify-266"><a href="#SQLite.Generator.can_identify-266"><span class="linenos">266</span></a><span class="sd"> identify:</span>
</span><span id="SQLite.Generator.can_identify-264"><a href="#SQLite.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span> </span><span id="SQLite.Generator.can_identify-267"><a href="#SQLite.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span>
</span><span id="SQLite.Generator.can_identify-265"><a href="#SQLite.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span> </span><span id="SQLite.Generator.can_identify-268"><a href="#SQLite.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span>
</span><span id="SQLite.Generator.can_identify-266"><a href="#SQLite.Generator.can_identify-266"><span class="linenos">266</span></a> </span><span id="SQLite.Generator.can_identify-269"><a href="#SQLite.Generator.can_identify-269"><span class="linenos">269</span></a>
</span><span id="SQLite.Generator.can_identify-267"><a href="#SQLite.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> Returns:</span> </span><span id="SQLite.Generator.can_identify-270"><a href="#SQLite.Generator.can_identify-270"><span class="linenos">270</span></a><span class="sd"> Returns:</span>
</span><span id="SQLite.Generator.can_identify-268"><a href="#SQLite.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> Whether or not the given text can be identified.</span> </span><span id="SQLite.Generator.can_identify-271"><a href="#SQLite.Generator.can_identify-271"><span class="linenos">271</span></a><span class="sd"> Whether or not the given text can be identified.</span>
</span><span id="SQLite.Generator.can_identify-269"><a href="#SQLite.Generator.can_identify-269"><span class="linenos">269</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="SQLite.Generator.can_identify-272"><a href="#SQLite.Generator.can_identify-272"><span class="linenos">272</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="SQLite.Generator.can_identify-270"><a href="#SQLite.Generator.can_identify-270"><span class="linenos">270</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="SQLite.Generator.can_identify-273"><a href="#SQLite.Generator.can_identify-273"><span class="linenos">273</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="SQLite.Generator.can_identify-271"><a href="#SQLite.Generator.can_identify-271"><span class="linenos">271</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="SQLite.Generator.can_identify-274"><a href="#SQLite.Generator.can_identify-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="kc">True</span>
</span><span id="SQLite.Generator.can_identify-272"><a href="#SQLite.Generator.can_identify-272"><span class="linenos">272</span></a>
</span><span id="SQLite.Generator.can_identify-273"><a href="#SQLite.Generator.can_identify-273"><span class="linenos">273</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="SQLite.Generator.can_identify-274"><a href="#SQLite.Generator.can_identify-274"><span class="linenos">274</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="SQLite.Generator.can_identify-275"><a href="#SQLite.Generator.can_identify-275"><span class="linenos">275</span></a> </span><span id="SQLite.Generator.can_identify-275"><a href="#SQLite.Generator.can_identify-275"><span class="linenos">275</span></a>
</span><span id="SQLite.Generator.can_identify-276"><a href="#SQLite.Generator.can_identify-276"><span class="linenos">276</span></a> <span class="k">return</span> <span class="kc">False</span> </span><span id="SQLite.Generator.can_identify-276"><a href="#SQLite.Generator.can_identify-276"><span class="linenos">276</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="SQLite.Generator.can_identify-277"><a href="#SQLite.Generator.can_identify-277"><span class="linenos">277</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="SQLite.Generator.can_identify-278"><a href="#SQLite.Generator.can_identify-278"><span class="linenos">278</span></a>
</span><span id="SQLite.Generator.can_identify-279"><a href="#SQLite.Generator.can_identify-279"><span class="linenos">279</span></a> <span class="k">return</span> <span class="kc">False</span>
</span></pre></div> </span></pre></div>

View file

@ -528,6 +528,7 @@
<dd id="StarRocks.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="mysql.html#MySQL.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd> <dd id="StarRocks.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="mysql.html#MySQL.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd>
<dd id="StarRocks.TIME_FORMAT" class="variable"><a href="mysql.html#MySQL.TIME_FORMAT">TIME_FORMAT</a></dd> <dd id="StarRocks.TIME_FORMAT" class="variable"><a href="mysql.html#MySQL.TIME_FORMAT">TIME_FORMAT</a></dd>
<dd id="StarRocks.DPIPE_IS_STRING_CONCAT" class="variable"><a href="mysql.html#MySQL.DPIPE_IS_STRING_CONCAT">DPIPE_IS_STRING_CONCAT</a></dd> <dd id="StarRocks.DPIPE_IS_STRING_CONCAT" class="variable"><a href="mysql.html#MySQL.DPIPE_IS_STRING_CONCAT">DPIPE_IS_STRING_CONCAT</a></dd>
<dd id="StarRocks.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="mysql.html#MySQL.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="StarRocks.TIME_MAPPING" class="variable"><a href="mysql.html#MySQL.TIME_MAPPING">TIME_MAPPING</a></dd> <dd id="StarRocks.TIME_MAPPING" class="variable"><a href="mysql.html#MySQL.TIME_MAPPING">TIME_MAPPING</a></dd>
<dd id="StarRocks.Tokenizer" class="class"><a href="mysql.html#MySQL.Tokenizer">Tokenizer</a></dd> <dd id="StarRocks.Tokenizer" class="class"><a href="mysql.html#MySQL.Tokenizer">Tokenizer</a></dd>
@ -736,6 +737,7 @@ Default: 3</li>
<dd id="StarRocks.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd> <dd id="StarRocks.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd>
<dd id="StarRocks.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd> <dd id="StarRocks.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd>
<dd id="StarRocks.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd> <dd id="StarRocks.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd>
<dd id="StarRocks.Parser.FETCH_TOKENS" class="variable"><a href="../parser.html#Parser.FETCH_TOKENS">FETCH_TOKENS</a></dd>
<dd id="StarRocks.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd> <dd id="StarRocks.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd>
<dd id="StarRocks.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd> <dd id="StarRocks.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd>
<dd id="StarRocks.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd> <dd id="StarRocks.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd>
@ -767,7 +769,6 @@ Default: 3</li>
</div> </div>
<div><dt><a href="mysql.html#MySQL.Parser">sqlglot.dialects.mysql.MySQL.Parser</a></dt> <div><dt><a href="mysql.html#MySQL.Parser">sqlglot.dialects.mysql.MySQL.Parser</a></dt>
<dd id="StarRocks.Parser.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="mysql.html#MySQL.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="StarRocks.Parser.FUNC_TOKENS" class="variable"><a href="mysql.html#MySQL.Parser.FUNC_TOKENS">FUNC_TOKENS</a></dd> <dd id="StarRocks.Parser.FUNC_TOKENS" class="variable"><a href="mysql.html#MySQL.Parser.FUNC_TOKENS">FUNC_TOKENS</a></dd>
<dd id="StarRocks.Parser.CONJUNCTION" class="variable"><a href="mysql.html#MySQL.Parser.CONJUNCTION">CONJUNCTION</a></dd> <dd id="StarRocks.Parser.CONJUNCTION" class="variable"><a href="mysql.html#MySQL.Parser.CONJUNCTION">CONJUNCTION</a></dd>
<dd id="StarRocks.Parser.BITWISE" class="variable"><a href="mysql.html#MySQL.Parser.BITWISE">BITWISE</a></dd> <dd id="StarRocks.Parser.BITWISE" class="variable"><a href="mysql.html#MySQL.Parser.BITWISE">BITWISE</a></dd>
@ -783,6 +784,7 @@ Default: 3</li>
<dd id="StarRocks.Parser.TYPE_TOKENS" class="variable"><a href="mysql.html#MySQL.Parser.TYPE_TOKENS">TYPE_TOKENS</a></dd> <dd id="StarRocks.Parser.TYPE_TOKENS" class="variable"><a href="mysql.html#MySQL.Parser.TYPE_TOKENS">TYPE_TOKENS</a></dd>
<dd id="StarRocks.Parser.ENUM_TYPE_TOKENS" class="variable"><a href="mysql.html#MySQL.Parser.ENUM_TYPE_TOKENS">ENUM_TYPE_TOKENS</a></dd> <dd id="StarRocks.Parser.ENUM_TYPE_TOKENS" class="variable"><a href="mysql.html#MySQL.Parser.ENUM_TYPE_TOKENS">ENUM_TYPE_TOKENS</a></dd>
<dd id="StarRocks.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="mysql.html#MySQL.Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd> <dd id="StarRocks.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="mysql.html#MySQL.Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd>
<dd id="StarRocks.Parser.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="mysql.html#MySQL.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="StarRocks.Parser.TIME_MAPPING" class="variable"><a href="mysql.html#MySQL.Parser.TIME_MAPPING">TIME_MAPPING</a></dd> <dd id="StarRocks.Parser.TIME_MAPPING" class="variable"><a href="mysql.html#MySQL.Parser.TIME_MAPPING">TIME_MAPPING</a></dd>
</div> </div>
@ -959,26 +961,26 @@ Default: True</li>
</div> </div>
<a class="headerlink" href="#StarRocks.Generator.can_identify"></a> <a class="headerlink" href="#StarRocks.Generator.can_identify"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="StarRocks.Generator.can_identify-257"><a href="#StarRocks.Generator.can_identify-257"><span class="linenos">257</span></a> <span class="nd">@classmethod</span> <div class="pdoc-code codehilite"><pre><span></span><span id="StarRocks.Generator.can_identify-260"><a href="#StarRocks.Generator.can_identify-260"><span class="linenos">260</span></a> <span class="nd">@classmethod</span>
</span><span id="StarRocks.Generator.can_identify-258"><a href="#StarRocks.Generator.can_identify-258"><span class="linenos">258</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="StarRocks.Generator.can_identify-261"><a href="#StarRocks.Generator.can_identify-261"><span class="linenos">261</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="StarRocks.Generator.can_identify-259"><a href="#StarRocks.Generator.can_identify-259"><span class="linenos">259</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="StarRocks.Generator.can_identify-262"><a href="#StarRocks.Generator.can_identify-262"><span class="linenos">262</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="StarRocks.Generator.can_identify-260"><a href="#StarRocks.Generator.can_identify-260"><span class="linenos">260</span></a> </span><span id="StarRocks.Generator.can_identify-263"><a href="#StarRocks.Generator.can_identify-263"><span class="linenos">263</span></a>
</span><span id="StarRocks.Generator.can_identify-261"><a href="#StarRocks.Generator.can_identify-261"><span class="linenos">261</span></a><span class="sd"> Args:</span> </span><span id="StarRocks.Generator.can_identify-264"><a href="#StarRocks.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> Args:</span>
</span><span id="StarRocks.Generator.can_identify-262"><a href="#StarRocks.Generator.can_identify-262"><span class="linenos">262</span></a><span class="sd"> text: The text to check.</span> </span><span id="StarRocks.Generator.can_identify-265"><a href="#StarRocks.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> text: The text to check.</span>
</span><span id="StarRocks.Generator.can_identify-263"><a href="#StarRocks.Generator.can_identify-263"><span class="linenos">263</span></a><span class="sd"> identify:</span> </span><span id="StarRocks.Generator.can_identify-266"><a href="#StarRocks.Generator.can_identify-266"><span class="linenos">266</span></a><span class="sd"> identify:</span>
</span><span id="StarRocks.Generator.can_identify-264"><a href="#StarRocks.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span> </span><span id="StarRocks.Generator.can_identify-267"><a href="#StarRocks.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span>
</span><span id="StarRocks.Generator.can_identify-265"><a href="#StarRocks.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span> </span><span id="StarRocks.Generator.can_identify-268"><a href="#StarRocks.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span>
</span><span id="StarRocks.Generator.can_identify-266"><a href="#StarRocks.Generator.can_identify-266"><span class="linenos">266</span></a> </span><span id="StarRocks.Generator.can_identify-269"><a href="#StarRocks.Generator.can_identify-269"><span class="linenos">269</span></a>
</span><span id="StarRocks.Generator.can_identify-267"><a href="#StarRocks.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> Returns:</span> </span><span id="StarRocks.Generator.can_identify-270"><a href="#StarRocks.Generator.can_identify-270"><span class="linenos">270</span></a><span class="sd"> Returns:</span>
</span><span id="StarRocks.Generator.can_identify-268"><a href="#StarRocks.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> Whether or not the given text can be identified.</span> </span><span id="StarRocks.Generator.can_identify-271"><a href="#StarRocks.Generator.can_identify-271"><span class="linenos">271</span></a><span class="sd"> Whether or not the given text can be identified.</span>
</span><span id="StarRocks.Generator.can_identify-269"><a href="#StarRocks.Generator.can_identify-269"><span class="linenos">269</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="StarRocks.Generator.can_identify-272"><a href="#StarRocks.Generator.can_identify-272"><span class="linenos">272</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="StarRocks.Generator.can_identify-270"><a href="#StarRocks.Generator.can_identify-270"><span class="linenos">270</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="StarRocks.Generator.can_identify-273"><a href="#StarRocks.Generator.can_identify-273"><span class="linenos">273</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="StarRocks.Generator.can_identify-271"><a href="#StarRocks.Generator.can_identify-271"><span class="linenos">271</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="StarRocks.Generator.can_identify-274"><a href="#StarRocks.Generator.can_identify-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="kc">True</span>
</span><span id="StarRocks.Generator.can_identify-272"><a href="#StarRocks.Generator.can_identify-272"><span class="linenos">272</span></a>
</span><span id="StarRocks.Generator.can_identify-273"><a href="#StarRocks.Generator.can_identify-273"><span class="linenos">273</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="StarRocks.Generator.can_identify-274"><a href="#StarRocks.Generator.can_identify-274"><span class="linenos">274</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="StarRocks.Generator.can_identify-275"><a href="#StarRocks.Generator.can_identify-275"><span class="linenos">275</span></a> </span><span id="StarRocks.Generator.can_identify-275"><a href="#StarRocks.Generator.can_identify-275"><span class="linenos">275</span></a>
</span><span id="StarRocks.Generator.can_identify-276"><a href="#StarRocks.Generator.can_identify-276"><span class="linenos">276</span></a> <span class="k">return</span> <span class="kc">False</span> </span><span id="StarRocks.Generator.can_identify-276"><a href="#StarRocks.Generator.can_identify-276"><span class="linenos">276</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="StarRocks.Generator.can_identify-277"><a href="#StarRocks.Generator.can_identify-277"><span class="linenos">277</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="StarRocks.Generator.can_identify-278"><a href="#StarRocks.Generator.can_identify-278"><span class="linenos">278</span></a>
</span><span id="StarRocks.Generator.can_identify-279"><a href="#StarRocks.Generator.can_identify-279"><span class="linenos">279</span></a> <span class="k">return</span> <span class="kc">False</span>
</span></pre></div> </span></pre></div>

View file

@ -515,6 +515,7 @@
<dd id="Tableau.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="dialect.html#Dialect.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd> <dd id="Tableau.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="dialect.html#Dialect.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd>
<dd id="Tableau.DPIPE_IS_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.DPIPE_IS_STRING_CONCAT">DPIPE_IS_STRING_CONCAT</a></dd> <dd id="Tableau.DPIPE_IS_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.DPIPE_IS_STRING_CONCAT">DPIPE_IS_STRING_CONCAT</a></dd>
<dd id="Tableau.STRICT_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd> <dd id="Tableau.STRICT_STRING_CONCAT" class="variable"><a href="dialect.html#Dialect.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd>
<dd id="Tableau.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="dialect.html#Dialect.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Tableau.NORMALIZE_FUNCTIONS" class="variable"><a href="dialect.html#Dialect.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd> <dd id="Tableau.NORMALIZE_FUNCTIONS" class="variable"><a href="dialect.html#Dialect.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd>
<dd id="Tableau.NULL_ORDERING" class="variable"><a href="dialect.html#Dialect.NULL_ORDERING">NULL_ORDERING</a></dd> <dd id="Tableau.NULL_ORDERING" class="variable"><a href="dialect.html#Dialect.NULL_ORDERING">NULL_ORDERING</a></dd>
<dd id="Tableau.DATE_FORMAT" class="variable"><a href="dialect.html#Dialect.DATE_FORMAT">DATE_FORMAT</a></dd> <dd id="Tableau.DATE_FORMAT" class="variable"><a href="dialect.html#Dialect.DATE_FORMAT">DATE_FORMAT</a></dd>
@ -776,26 +777,26 @@ Default: True</li>
</div> </div>
<a class="headerlink" href="#Tableau.Generator.can_identify"></a> <a class="headerlink" href="#Tableau.Generator.can_identify"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Tableau.Generator.can_identify-257"><a href="#Tableau.Generator.can_identify-257"><span class="linenos">257</span></a> <span class="nd">@classmethod</span> <div class="pdoc-code codehilite"><pre><span></span><span id="Tableau.Generator.can_identify-260"><a href="#Tableau.Generator.can_identify-260"><span class="linenos">260</span></a> <span class="nd">@classmethod</span>
</span><span id="Tableau.Generator.can_identify-258"><a href="#Tableau.Generator.can_identify-258"><span class="linenos">258</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="Tableau.Generator.can_identify-261"><a href="#Tableau.Generator.can_identify-261"><span class="linenos">261</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="Tableau.Generator.can_identify-259"><a href="#Tableau.Generator.can_identify-259"><span class="linenos">259</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="Tableau.Generator.can_identify-262"><a href="#Tableau.Generator.can_identify-262"><span class="linenos">262</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="Tableau.Generator.can_identify-260"><a href="#Tableau.Generator.can_identify-260"><span class="linenos">260</span></a> </span><span id="Tableau.Generator.can_identify-263"><a href="#Tableau.Generator.can_identify-263"><span class="linenos">263</span></a>
</span><span id="Tableau.Generator.can_identify-261"><a href="#Tableau.Generator.can_identify-261"><span class="linenos">261</span></a><span class="sd"> Args:</span> </span><span id="Tableau.Generator.can_identify-264"><a href="#Tableau.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> Args:</span>
</span><span id="Tableau.Generator.can_identify-262"><a href="#Tableau.Generator.can_identify-262"><span class="linenos">262</span></a><span class="sd"> text: The text to check.</span> </span><span id="Tableau.Generator.can_identify-265"><a href="#Tableau.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> text: The text to check.</span>
</span><span id="Tableau.Generator.can_identify-263"><a href="#Tableau.Generator.can_identify-263"><span class="linenos">263</span></a><span class="sd"> identify:</span> </span><span id="Tableau.Generator.can_identify-266"><a href="#Tableau.Generator.can_identify-266"><span class="linenos">266</span></a><span class="sd"> identify:</span>
</span><span id="Tableau.Generator.can_identify-264"><a href="#Tableau.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span> </span><span id="Tableau.Generator.can_identify-267"><a href="#Tableau.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span>
</span><span id="Tableau.Generator.can_identify-265"><a href="#Tableau.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span> </span><span id="Tableau.Generator.can_identify-268"><a href="#Tableau.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span>
</span><span id="Tableau.Generator.can_identify-266"><a href="#Tableau.Generator.can_identify-266"><span class="linenos">266</span></a> </span><span id="Tableau.Generator.can_identify-269"><a href="#Tableau.Generator.can_identify-269"><span class="linenos">269</span></a>
</span><span id="Tableau.Generator.can_identify-267"><a href="#Tableau.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> Returns:</span> </span><span id="Tableau.Generator.can_identify-270"><a href="#Tableau.Generator.can_identify-270"><span class="linenos">270</span></a><span class="sd"> Returns:</span>
</span><span id="Tableau.Generator.can_identify-268"><a href="#Tableau.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> Whether or not the given text can be identified.</span> </span><span id="Tableau.Generator.can_identify-271"><a href="#Tableau.Generator.can_identify-271"><span class="linenos">271</span></a><span class="sd"> Whether or not the given text can be identified.</span>
</span><span id="Tableau.Generator.can_identify-269"><a href="#Tableau.Generator.can_identify-269"><span class="linenos">269</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="Tableau.Generator.can_identify-272"><a href="#Tableau.Generator.can_identify-272"><span class="linenos">272</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Tableau.Generator.can_identify-270"><a href="#Tableau.Generator.can_identify-270"><span class="linenos">270</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="Tableau.Generator.can_identify-273"><a href="#Tableau.Generator.can_identify-273"><span class="linenos">273</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="Tableau.Generator.can_identify-271"><a href="#Tableau.Generator.can_identify-271"><span class="linenos">271</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="Tableau.Generator.can_identify-274"><a href="#Tableau.Generator.can_identify-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="kc">True</span>
</span><span id="Tableau.Generator.can_identify-272"><a href="#Tableau.Generator.can_identify-272"><span class="linenos">272</span></a>
</span><span id="Tableau.Generator.can_identify-273"><a href="#Tableau.Generator.can_identify-273"><span class="linenos">273</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="Tableau.Generator.can_identify-274"><a href="#Tableau.Generator.can_identify-274"><span class="linenos">274</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="Tableau.Generator.can_identify-275"><a href="#Tableau.Generator.can_identify-275"><span class="linenos">275</span></a> </span><span id="Tableau.Generator.can_identify-275"><a href="#Tableau.Generator.can_identify-275"><span class="linenos">275</span></a>
</span><span id="Tableau.Generator.can_identify-276"><a href="#Tableau.Generator.can_identify-276"><span class="linenos">276</span></a> <span class="k">return</span> <span class="kc">False</span> </span><span id="Tableau.Generator.can_identify-276"><a href="#Tableau.Generator.can_identify-276"><span class="linenos">276</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="Tableau.Generator.can_identify-277"><a href="#Tableau.Generator.can_identify-277"><span class="linenos">277</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="Tableau.Generator.can_identify-278"><a href="#Tableau.Generator.can_identify-278"><span class="linenos">278</span></a>
</span><span id="Tableau.Generator.can_identify-279"><a href="#Tableau.Generator.can_identify-279"><span class="linenos">279</span></a> <span class="k">return</span> <span class="kc">False</span>
</span></pre></div> </span></pre></div>
@ -1449,6 +1450,7 @@ Default: 3</li>
<dd id="Tableau.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd> <dd id="Tableau.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd>
<dd id="Tableau.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd> <dd id="Tableau.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd>
<dd id="Tableau.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd> <dd id="Tableau.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd>
<dd id="Tableau.Parser.FETCH_TOKENS" class="variable"><a href="../parser.html#Parser.FETCH_TOKENS">FETCH_TOKENS</a></dd>
<dd id="Tableau.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd> <dd id="Tableau.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd>
<dd id="Tableau.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd> <dd id="Tableau.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd>
<dd id="Tableau.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd> <dd id="Tableau.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd>
@ -1457,13 +1459,13 @@ Default: 3</li>
<dd id="Tableau.Parser.IDENTIFY_PIVOT_STRINGS" class="variable"><a href="../parser.html#Parser.IDENTIFY_PIVOT_STRINGS">IDENTIFY_PIVOT_STRINGS</a></dd> <dd id="Tableau.Parser.IDENTIFY_PIVOT_STRINGS" class="variable"><a href="../parser.html#Parser.IDENTIFY_PIVOT_STRINGS">IDENTIFY_PIVOT_STRINGS</a></dd>
<dd id="Tableau.Parser.LOG_BASE_FIRST" class="variable"><a href="../parser.html#Parser.LOG_BASE_FIRST">LOG_BASE_FIRST</a></dd> <dd id="Tableau.Parser.LOG_BASE_FIRST" class="variable"><a href="../parser.html#Parser.LOG_BASE_FIRST">LOG_BASE_FIRST</a></dd>
<dd id="Tableau.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="../parser.html#Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd> <dd id="Tableau.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="../parser.html#Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd>
<dd id="Tableau.Parser.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="../parser.html#Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Tableau.Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD" class="variable"><a href="../parser.html#Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD">ALTER_TABLE_ADD_COLUMN_KEYWORD</a></dd> <dd id="Tableau.Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD" class="variable"><a href="../parser.html#Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD">ALTER_TABLE_ADD_COLUMN_KEYWORD</a></dd>
<dd id="Tableau.Parser.TABLESAMPLE_CSV" class="variable"><a href="../parser.html#Parser.TABLESAMPLE_CSV">TABLESAMPLE_CSV</a></dd> <dd id="Tableau.Parser.TABLESAMPLE_CSV" class="variable"><a href="../parser.html#Parser.TABLESAMPLE_CSV">TABLESAMPLE_CSV</a></dd>
<dd id="Tableau.Parser.INDEX_OFFSET" class="variable"><a href="../parser.html#Parser.INDEX_OFFSET">INDEX_OFFSET</a></dd> <dd id="Tableau.Parser.INDEX_OFFSET" class="variable"><a href="../parser.html#Parser.INDEX_OFFSET">INDEX_OFFSET</a></dd>
<dd id="Tableau.Parser.UNNEST_COLUMN_ONLY" class="variable"><a href="../parser.html#Parser.UNNEST_COLUMN_ONLY">UNNEST_COLUMN_ONLY</a></dd> <dd id="Tableau.Parser.UNNEST_COLUMN_ONLY" class="variable"><a href="../parser.html#Parser.UNNEST_COLUMN_ONLY">UNNEST_COLUMN_ONLY</a></dd>
<dd id="Tableau.Parser.ALIAS_POST_TABLESAMPLE" class="variable"><a href="../parser.html#Parser.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd> <dd id="Tableau.Parser.ALIAS_POST_TABLESAMPLE" class="variable"><a href="../parser.html#Parser.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd>
<dd id="Tableau.Parser.STRICT_STRING_CONCAT" class="variable"><a href="../parser.html#Parser.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd> <dd id="Tableau.Parser.STRICT_STRING_CONCAT" class="variable"><a href="../parser.html#Parser.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd>
<dd id="Tableau.Parser.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="../parser.html#Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Tableau.Parser.NORMALIZE_FUNCTIONS" class="variable"><a href="../parser.html#Parser.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd> <dd id="Tableau.Parser.NORMALIZE_FUNCTIONS" class="variable"><a href="../parser.html#Parser.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd>
<dd id="Tableau.Parser.NULL_ORDERING" class="variable"><a href="../parser.html#Parser.NULL_ORDERING">NULL_ORDERING</a></dd> <dd id="Tableau.Parser.NULL_ORDERING" class="variable"><a href="../parser.html#Parser.NULL_ORDERING">NULL_ORDERING</a></dd>
<dd id="Tableau.Parser.FORMAT_MAPPING" class="variable"><a href="../parser.html#Parser.FORMAT_MAPPING">FORMAT_MAPPING</a></dd> <dd id="Tableau.Parser.FORMAT_MAPPING" class="variable"><a href="../parser.html#Parser.FORMAT_MAPPING">FORMAT_MAPPING</a></dd>

File diff suppressed because one or more lines are too long

View file

@ -33,6 +33,9 @@
<li> <li>
<a class="class" href="#Trino">Trino</a> <a class="class" href="#Trino">Trino</a>
<ul class="memberlist"> <ul class="memberlist">
<li>
<a class="variable" href="#Trino.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a>
</li>
<li> <li>
<a class="class" href="#Trino.Generator">Trino.Generator</a> <a class="class" href="#Trino.Generator">Trino.Generator</a>
<ul class="memberlist"> <ul class="memberlist">
@ -95,30 +98,6 @@
</li> </li>
</ul> </ul>
</li>
<li>
<a class="class" href="#Trino.Parser">Trino.Parser</a>
<ul class="memberlist">
<li>
<a class="variable" href="#Trino.Parser.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a>
</li>
<li>
<a class="variable" href="#Trino.Parser.TOKENIZER_CLASS">TOKENIZER_CLASS</a>
</li>
<li>
<a class="variable" href="#Trino.Parser.SHOW_TRIE">SHOW_TRIE</a>
</li>
<li>
<a class="variable" href="#Trino.Parser.SET_TRIE">SET_TRIE</a>
</li>
<li>
<a class="variable" href="#Trino.Parser.FORMAT_TRIE">FORMAT_TRIE</a>
</li>
<li>
<a class="variable" href="#Trino.Parser.TIME_TRIE">TIME_TRIE</a>
</li>
</ul>
</li> </li>
<li> <li>
<a class="variable" href="#Trino.tokenizer_class">tokenizer_class</a> <a class="variable" href="#Trino.tokenizer_class">tokenizer_class</a>
@ -204,17 +183,16 @@
</span><span id="L-5"><a href="#L-5"><span class="linenos"> 5</span></a> </span><span id="L-5"><a href="#L-5"><span class="linenos"> 5</span></a>
</span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a> </span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a>
</span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</span></a><span class="k">class</span> <span class="nc">Trino</span><span class="p">(</span><span class="n">Presto</span><span class="p">):</span> </span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</span></a><span class="k">class</span> <span class="nc">Trino</span><span class="p">(</span><span class="n">Presto</span><span class="p">):</span>
</span><span id="L-8"><a href="#L-8"><span class="linenos"> 8</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">Presto</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> </span><span id="L-8"><a href="#L-8"><span class="linenos"> 8</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</span></a>
</span><span id="L-10"><a href="#L-10"><span class="linenos">10</span></a> <span class="o">**</span><span class="n">Presto</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-10"><a href="#L-10"><span class="linenos">10</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">Presto</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span>
</span><span id="L-11"><a href="#L-11"><span class="linenos">11</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</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;REDUCE(</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">, 0, (acc, x) -&gt; acc + x, acc -&gt; acc)&quot;</span><span class="p">,</span> </span><span id="L-11"><a href="#L-11"><span class="linenos">11</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="L-12"><a href="#L-12"><span class="linenos">12</span></a> <span class="p">}</span> </span><span id="L-12"><a href="#L-12"><span class="linenos">12</span></a> <span class="o">**</span><span class="n">Presto</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-13"><a href="#L-13"><span class="linenos">13</span></a> </span><span id="L-13"><a href="#L-13"><span class="linenos">13</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</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;REDUCE(</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">, 0, (acc, x) -&gt; acc + x, acc -&gt; acc)&quot;</span><span class="p">,</span>
</span><span id="L-14"><a href="#L-14"><span class="linenos">14</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">Presto</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span> </span><span id="L-14"><a href="#L-14"><span class="linenos">14</span></a> <span class="p">}</span>
</span><span id="L-15"><a href="#L-15"><span class="linenos">15</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><span id="L-15"><a href="#L-15"><span class="linenos">15</span></a>
</span><span id="L-16"><a href="#L-16"><span class="linenos">16</span></a> </span><span id="L-16"><a href="#L-16"><span class="linenos">16</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">Presto</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span>
</span><span id="L-17"><a href="#L-17"><span class="linenos">17</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">Presto</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span> </span><span id="L-17"><a href="#L-17"><span class="linenos">17</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><span id="L-18"><a href="#L-18"><span class="linenos">18</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span></pre></div> </span></pre></div>
@ -231,22 +209,33 @@
</div> </div>
<a class="headerlink" href="#Trino"></a> <a class="headerlink" href="#Trino"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Trino-8"><a href="#Trino-8"><span class="linenos"> 8</span></a><span class="k">class</span> <span class="nc">Trino</span><span class="p">(</span><span class="n">Presto</span><span class="p">):</span> <div class="pdoc-code codehilite"><pre><span></span><span id="Trino-8"><a href="#Trino-8"><span class="linenos"> 8</span></a><span class="k">class</span> <span class="nc">Trino</span><span class="p">(</span><span class="n">Presto</span><span class="p">):</span>
</span><span id="Trino-9"><a href="#Trino-9"><span class="linenos"> 9</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">Presto</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> </span><span id="Trino-9"><a href="#Trino-9"><span class="linenos"> 9</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span><span id="Trino-10"><a href="#Trino-10"><span class="linenos">10</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Trino-10"><a href="#Trino-10"><span class="linenos">10</span></a>
</span><span id="Trino-11"><a href="#Trino-11"><span class="linenos">11</span></a> <span class="o">**</span><span class="n">Presto</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="Trino-11"><a href="#Trino-11"><span class="linenos">11</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">Presto</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span>
</span><span id="Trino-12"><a href="#Trino-12"><span class="linenos">12</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</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;REDUCE(</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">, 0, (acc, x) -&gt; acc + x, acc -&gt; acc)&quot;</span><span class="p">,</span> </span><span id="Trino-12"><a href="#Trino-12"><span class="linenos">12</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Trino-13"><a href="#Trino-13"><span class="linenos">13</span></a> <span class="p">}</span> </span><span id="Trino-13"><a href="#Trino-13"><span class="linenos">13</span></a> <span class="o">**</span><span class="n">Presto</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="Trino-14"><a href="#Trino-14"><span class="linenos">14</span></a> </span><span id="Trino-14"><a href="#Trino-14"><span class="linenos">14</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</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;REDUCE(</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">, 0, (acc, x) -&gt; acc + x, acc -&gt; acc)&quot;</span><span class="p">,</span>
</span><span id="Trino-15"><a href="#Trino-15"><span class="linenos">15</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">Presto</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span> </span><span id="Trino-15"><a href="#Trino-15"><span class="linenos">15</span></a> <span class="p">}</span>
</span><span id="Trino-16"><a href="#Trino-16"><span class="linenos">16</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><span id="Trino-16"><a href="#Trino-16"><span class="linenos">16</span></a>
</span><span id="Trino-17"><a href="#Trino-17"><span class="linenos">17</span></a> </span><span id="Trino-17"><a href="#Trino-17"><span class="linenos">17</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">Presto</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span>
</span><span id="Trino-18"><a href="#Trino-18"><span class="linenos">18</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">Presto</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span> </span><span id="Trino-18"><a href="#Trino-18"><span class="linenos">18</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><span id="Trino-19"><a href="#Trino-19"><span class="linenos">19</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span></pre></div> </span></pre></div>
<div id="Trino.SUPPORTS_USER_DEFINED_TYPES" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_USER_DEFINED_TYPES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Trino.SUPPORTS_USER_DEFINED_TYPES"></a>
</div>
<div id="Trino.tokenizer_class" class="classattr"> <div id="Trino.tokenizer_class" class="classattr">
<div class="attr variable"> <div class="attr variable">
<span class="name">tokenizer_class</span> = <span class="name">tokenizer_class</span> =
@ -262,7 +251,7 @@
<div id="Trino.parser_class" class="classattr"> <div id="Trino.parser_class" class="classattr">
<div class="attr variable"> <div class="attr variable">
<span class="name">parser_class</span> = <span class="name">parser_class</span> =
<span class="default_value">&lt;class &#39;<a href="#Trino.Parser">Trino.Parser</a>&#39;&gt;</span> <span class="default_value">&lt;class &#39;<a href="presto.html#Presto.Parser">sqlglot.dialects.presto.Presto.Parser</a>&#39;&gt;</span>
</div> </div>
@ -465,6 +454,7 @@
<dd id="Trino.TIME_MAPPING" class="variable"><a href="presto.html#Presto.TIME_MAPPING">TIME_MAPPING</a></dd> <dd id="Trino.TIME_MAPPING" class="variable"><a href="presto.html#Presto.TIME_MAPPING">TIME_MAPPING</a></dd>
<dd id="Trino.STRICT_STRING_CONCAT" class="variable"><a href="presto.html#Presto.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd> <dd id="Trino.STRICT_STRING_CONCAT" class="variable"><a href="presto.html#Presto.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd>
<dd id="Trino.RESOLVES_IDENTIFIERS_AS_UPPERCASE" class="variable"><a href="presto.html#Presto.RESOLVES_IDENTIFIERS_AS_UPPERCASE">RESOLVES_IDENTIFIERS_AS_UPPERCASE</a></dd> <dd id="Trino.RESOLVES_IDENTIFIERS_AS_UPPERCASE" class="variable"><a href="presto.html#Presto.RESOLVES_IDENTIFIERS_AS_UPPERCASE">RESOLVES_IDENTIFIERS_AS_UPPERCASE</a></dd>
<dd id="Trino.Parser" class="class"><a href="presto.html#Presto.Parser">Parser</a></dd>
</div> </div>
<div><dt><a href="dialect.html#Dialect">sqlglot.dialects.dialect.Dialect</a></dt> <div><dt><a href="dialect.html#Dialect">sqlglot.dialects.dialect.Dialect</a></dt>
@ -507,11 +497,11 @@
</div> </div>
<a class="headerlink" href="#Trino.Generator"></a> <a class="headerlink" href="#Trino.Generator"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Trino.Generator-9"><a href="#Trino.Generator-9"><span class="linenos"> 9</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">Presto</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span> <div class="pdoc-code codehilite"><pre><span></span><span id="Trino.Generator-11"><a href="#Trino.Generator-11"><span class="linenos">11</span></a> <span class="k">class</span> <span class="nc">Generator</span><span class="p">(</span><span class="n">Presto</span><span class="o">.</span><span class="n">Generator</span><span class="p">):</span>
</span><span id="Trino.Generator-10"><a href="#Trino.Generator-10"><span class="linenos">10</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span> </span><span id="Trino.Generator-12"><a href="#Trino.Generator-12"><span class="linenos">12</span></a> <span class="n">TRANSFORMS</span> <span class="o">=</span> <span class="p">{</span>
</span><span id="Trino.Generator-11"><a href="#Trino.Generator-11"><span class="linenos">11</span></a> <span class="o">**</span><span class="n">Presto</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="Trino.Generator-13"><a href="#Trino.Generator-13"><span class="linenos">13</span></a> <span class="o">**</span><span class="n">Presto</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="Trino.Generator-12"><a href="#Trino.Generator-12"><span class="linenos">12</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</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;REDUCE(</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">, 0, (acc, x) -&gt; acc + x, acc -&gt; acc)&quot;</span><span class="p">,</span> </span><span id="Trino.Generator-14"><a href="#Trino.Generator-14"><span class="linenos">14</span></a> <span class="n">exp</span><span class="o">.</span><span class="n">ArraySum</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;REDUCE(</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">, 0, (acc, x) -&gt; acc + x, acc -&gt; acc)&quot;</span><span class="p">,</span>
</span><span id="Trino.Generator-13"><a href="#Trino.Generator-13"><span class="linenos">13</span></a> <span class="p">}</span> </span><span id="Trino.Generator-15"><a href="#Trino.Generator-15"><span class="linenos">15</span></a> <span class="p">}</span>
</span></pre></div> </span></pre></div>
@ -617,26 +607,26 @@ Default: True</li>
</div> </div>
<a class="headerlink" href="#Trino.Generator.can_identify"></a> <a class="headerlink" href="#Trino.Generator.can_identify"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Trino.Generator.can_identify-257"><a href="#Trino.Generator.can_identify-257"><span class="linenos">257</span></a> <span class="nd">@classmethod</span> <div class="pdoc-code codehilite"><pre><span></span><span id="Trino.Generator.can_identify-260"><a href="#Trino.Generator.can_identify-260"><span class="linenos">260</span></a> <span class="nd">@classmethod</span>
</span><span id="Trino.Generator.can_identify-258"><a href="#Trino.Generator.can_identify-258"><span class="linenos">258</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="Trino.Generator.can_identify-261"><a href="#Trino.Generator.can_identify-261"><span class="linenos">261</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="Trino.Generator.can_identify-259"><a href="#Trino.Generator.can_identify-259"><span class="linenos">259</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="Trino.Generator.can_identify-262"><a href="#Trino.Generator.can_identify-262"><span class="linenos">262</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="Trino.Generator.can_identify-260"><a href="#Trino.Generator.can_identify-260"><span class="linenos">260</span></a> </span><span id="Trino.Generator.can_identify-263"><a href="#Trino.Generator.can_identify-263"><span class="linenos">263</span></a>
</span><span id="Trino.Generator.can_identify-261"><a href="#Trino.Generator.can_identify-261"><span class="linenos">261</span></a><span class="sd"> Args:</span> </span><span id="Trino.Generator.can_identify-264"><a href="#Trino.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> Args:</span>
</span><span id="Trino.Generator.can_identify-262"><a href="#Trino.Generator.can_identify-262"><span class="linenos">262</span></a><span class="sd"> text: The text to check.</span> </span><span id="Trino.Generator.can_identify-265"><a href="#Trino.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> text: The text to check.</span>
</span><span id="Trino.Generator.can_identify-263"><a href="#Trino.Generator.can_identify-263"><span class="linenos">263</span></a><span class="sd"> identify:</span> </span><span id="Trino.Generator.can_identify-266"><a href="#Trino.Generator.can_identify-266"><span class="linenos">266</span></a><span class="sd"> identify:</span>
</span><span id="Trino.Generator.can_identify-264"><a href="#Trino.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span> </span><span id="Trino.Generator.can_identify-267"><a href="#Trino.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span>
</span><span id="Trino.Generator.can_identify-265"><a href="#Trino.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span> </span><span id="Trino.Generator.can_identify-268"><a href="#Trino.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span>
</span><span id="Trino.Generator.can_identify-266"><a href="#Trino.Generator.can_identify-266"><span class="linenos">266</span></a> </span><span id="Trino.Generator.can_identify-269"><a href="#Trino.Generator.can_identify-269"><span class="linenos">269</span></a>
</span><span id="Trino.Generator.can_identify-267"><a href="#Trino.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> Returns:</span> </span><span id="Trino.Generator.can_identify-270"><a href="#Trino.Generator.can_identify-270"><span class="linenos">270</span></a><span class="sd"> Returns:</span>
</span><span id="Trino.Generator.can_identify-268"><a href="#Trino.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> Whether or not the given text can be identified.</span> </span><span id="Trino.Generator.can_identify-271"><a href="#Trino.Generator.can_identify-271"><span class="linenos">271</span></a><span class="sd"> Whether or not the given text can be identified.</span>
</span><span id="Trino.Generator.can_identify-269"><a href="#Trino.Generator.can_identify-269"><span class="linenos">269</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="Trino.Generator.can_identify-272"><a href="#Trino.Generator.can_identify-272"><span class="linenos">272</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Trino.Generator.can_identify-270"><a href="#Trino.Generator.can_identify-270"><span class="linenos">270</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="Trino.Generator.can_identify-273"><a href="#Trino.Generator.can_identify-273"><span class="linenos">273</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="Trino.Generator.can_identify-271"><a href="#Trino.Generator.can_identify-271"><span class="linenos">271</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="Trino.Generator.can_identify-274"><a href="#Trino.Generator.can_identify-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="kc">True</span>
</span><span id="Trino.Generator.can_identify-272"><a href="#Trino.Generator.can_identify-272"><span class="linenos">272</span></a>
</span><span id="Trino.Generator.can_identify-273"><a href="#Trino.Generator.can_identify-273"><span class="linenos">273</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="Trino.Generator.can_identify-274"><a href="#Trino.Generator.can_identify-274"><span class="linenos">274</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="Trino.Generator.can_identify-275"><a href="#Trino.Generator.can_identify-275"><span class="linenos">275</span></a> </span><span id="Trino.Generator.can_identify-275"><a href="#Trino.Generator.can_identify-275"><span class="linenos">275</span></a>
</span><span id="Trino.Generator.can_identify-276"><a href="#Trino.Generator.can_identify-276"><span class="linenos">276</span></a> <span class="k">return</span> <span class="kc">False</span> </span><span id="Trino.Generator.can_identify-276"><a href="#Trino.Generator.can_identify-276"><span class="linenos">276</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="Trino.Generator.can_identify-277"><a href="#Trino.Generator.can_identify-277"><span class="linenos">277</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="Trino.Generator.can_identify-278"><a href="#Trino.Generator.can_identify-278"><span class="linenos">278</span></a>
</span><span id="Trino.Generator.can_identify-279"><a href="#Trino.Generator.can_identify-279"><span class="linenos">279</span></a> <span class="k">return</span> <span class="kc">False</span>
</span></pre></div> </span></pre></div>
@ -1135,8 +1125,8 @@ Default: True</li>
</div> </div>
<a class="headerlink" href="#Trino.Tokenizer"></a> <a class="headerlink" href="#Trino.Tokenizer"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Trino.Tokenizer-15"><a href="#Trino.Tokenizer-15"><span class="linenos">15</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">Presto</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span> <div class="pdoc-code codehilite"><pre><span></span><span id="Trino.Tokenizer-17"><a href="#Trino.Tokenizer-17"><span class="linenos">17</span></a> <span class="k">class</span> <span class="nc">Tokenizer</span><span class="p">(</span><span class="n">Presto</span><span class="o">.</span><span class="n">Tokenizer</span><span class="p">):</span>
</span><span id="Trino.Tokenizer-16"><a href="#Trino.Tokenizer-16"><span class="linenos">16</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><span id="Trino.Tokenizer-18"><a href="#Trino.Tokenizer-18"><span class="linenos">18</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></pre></div> </span></pre></div>
@ -1189,218 +1179,6 @@ Default: True</li>
</dl> </dl>
</div> </div>
</section> </section>
<section id="Trino.Parser">
<input id="Trino.Parser-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<div class="attr class">
<span class="def">class</span>
<span class="name">Trino.Parser</span><wbr>(<span class="base"><a href="presto.html#Presto.Parser">sqlglot.dialects.presto.Presto.Parser</a></span>):
<label class="view-source-button" for="Trino.Parser-view-source"><span>View Source</span></label>
</div>
<a class="headerlink" href="#Trino.Parser"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Trino.Parser-18"><a href="#Trino.Parser-18"><span class="linenos">18</span></a> <span class="k">class</span> <span class="nc">Parser</span><span class="p">(</span><span class="n">Presto</span><span class="o">.</span><span class="n">Parser</span><span class="p">):</span>
</span><span id="Trino.Parser-19"><a href="#Trino.Parser-19"><span class="linenos">19</span></a> <span class="n">SUPPORTS_USER_DEFINED_TYPES</span> <span class="o">=</span> <span class="kc">False</span>
</span></pre></div>
<div class="docstring"><p>Parser consumes a list of tokens produced by the Tokenizer and produces a parsed syntax tree.</p>
<h6 id="arguments">Arguments:</h6>
<ul>
<li><strong>error_level:</strong> The desired error level.
Default: ErrorLevel.IMMEDIATE</li>
<li><strong>error_message_context:</strong> Determines the amount of context to capture from a
query string when displaying the error message (in number of characters).
Default: 100</li>
<li><strong>max_errors:</strong> Maximum number of error messages to include in a raised ParseError.
This is only relevant if error_level is ErrorLevel.RAISE.
Default: 3</li>
</ul>
</div>
<div id="Trino.Parser.SUPPORTS_USER_DEFINED_TYPES" class="classattr">
<div class="attr variable">
<span class="name">SUPPORTS_USER_DEFINED_TYPES</span> =
<span class="default_value">False</span>
</div>
<a class="headerlink" href="#Trino.Parser.SUPPORTS_USER_DEFINED_TYPES"></a>
</div>
<div id="Trino.Parser.TOKENIZER_CLASS" class="classattr">
<div class="attr variable">
<span class="name">TOKENIZER_CLASS</span><span class="annotation">: Type[<a href="../tokens.html#Tokenizer">sqlglot.tokens.Tokenizer</a>]</span> =
<span class="default_value">&lt;class &#39;<a href="#Trino.Tokenizer">Trino.Tokenizer</a>&#39;&gt;</span>
</div>
<a class="headerlink" href="#Trino.Parser.TOKENIZER_CLASS"></a>
</div>
<div id="Trino.Parser.SHOW_TRIE" class="classattr">
<div class="attr variable">
<span class="name">SHOW_TRIE</span><span class="annotation">: Dict</span> =
<span class="default_value">{}</span>
</div>
<a class="headerlink" href="#Trino.Parser.SHOW_TRIE"></a>
</div>
<div id="Trino.Parser.SET_TRIE" class="classattr">
<div class="attr variable">
<span class="name">SET_TRIE</span><span class="annotation">: Dict</span> =
<span class="default_value">{&#39;GLOBAL&#39;: {0: True}, &#39;LOCAL&#39;: {0: True}, &#39;SESSION&#39;: {0: True}, &#39;TRANSACTION&#39;: {0: True}}</span>
</div>
<a class="headerlink" href="#Trino.Parser.SET_TRIE"></a>
</div>
<div id="Trino.Parser.FORMAT_TRIE" class="classattr">
<div class="attr variable">
<span class="name">FORMAT_TRIE</span><span class="annotation">: Dict</span> =
<input id="Trino.Parser.FORMAT_TRIE-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="Trino.Parser.FORMAT_TRIE-view-value"></label><span class="default_value">{&#39;%&#39;: {&#39;M&#39;: {0: True}, &#39;c&#39;: {0: True}, &#39;e&#39;: {0: True}, &#39;h&#39;: {0: True}, &#39;i&#39;: {0: True}, &#39;s&#39;: {0: True}, &#39;u&#39;: {0: True}, &#39;k&#39;: {0: True}, &#39;l&#39;: {0: True}, &#39;T&#39;: {0: True}, &#39;W&#39;: {0: True}}}</span>
</div>
<a class="headerlink" href="#Trino.Parser.FORMAT_TRIE"></a>
</div>
<div id="Trino.Parser.TIME_TRIE" class="classattr">
<div class="attr variable">
<span class="name">TIME_TRIE</span><span class="annotation">: Dict</span> =
<input id="Trino.Parser.TIME_TRIE-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="Trino.Parser.TIME_TRIE-view-value"></label><span class="default_value">{&#39;%&#39;: {&#39;M&#39;: {0: True}, &#39;c&#39;: {0: True}, &#39;e&#39;: {0: True}, &#39;h&#39;: {0: True}, &#39;i&#39;: {0: True}, &#39;s&#39;: {0: True}, &#39;u&#39;: {0: True}, &#39;k&#39;: {0: True}, &#39;l&#39;: {0: True}, &#39;T&#39;: {0: True}, &#39;W&#39;: {0: True}}}</span>
</div>
<a class="headerlink" href="#Trino.Parser.TIME_TRIE"></a>
</div>
<div class="inherited">
<h5>Inherited Members</h5>
<dl>
<div><dt><a href="../parser.html#Parser">sqlglot.parser.Parser</a></dt>
<dd id="Trino.Parser.__init__" class="function"><a href="../parser.html#Parser.__init__">Parser</a></dd>
<dd id="Trino.Parser.NO_PAREN_FUNCTIONS" class="variable"><a href="../parser.html#Parser.NO_PAREN_FUNCTIONS">NO_PAREN_FUNCTIONS</a></dd>
<dd id="Trino.Parser.STRUCT_TYPE_TOKENS" class="variable"><a href="../parser.html#Parser.STRUCT_TYPE_TOKENS">STRUCT_TYPE_TOKENS</a></dd>
<dd id="Trino.Parser.NESTED_TYPE_TOKENS" class="variable"><a href="../parser.html#Parser.NESTED_TYPE_TOKENS">NESTED_TYPE_TOKENS</a></dd>
<dd id="Trino.Parser.ENUM_TYPE_TOKENS" class="variable"><a href="../parser.html#Parser.ENUM_TYPE_TOKENS">ENUM_TYPE_TOKENS</a></dd>
<dd id="Trino.Parser.TYPE_TOKENS" class="variable"><a href="../parser.html#Parser.TYPE_TOKENS">TYPE_TOKENS</a></dd>
<dd id="Trino.Parser.SIGNED_TO_UNSIGNED_TYPE_TOKEN" class="variable"><a href="../parser.html#Parser.SIGNED_TO_UNSIGNED_TYPE_TOKEN">SIGNED_TO_UNSIGNED_TYPE_TOKEN</a></dd>
<dd id="Trino.Parser.SUBQUERY_PREDICATES" class="variable"><a href="../parser.html#Parser.SUBQUERY_PREDICATES">SUBQUERY_PREDICATES</a></dd>
<dd id="Trino.Parser.RESERVED_KEYWORDS" class="variable"><a href="../parser.html#Parser.RESERVED_KEYWORDS">RESERVED_KEYWORDS</a></dd>
<dd id="Trino.Parser.DB_CREATABLES" class="variable"><a href="../parser.html#Parser.DB_CREATABLES">DB_CREATABLES</a></dd>
<dd id="Trino.Parser.CREATABLES" class="variable"><a href="../parser.html#Parser.CREATABLES">CREATABLES</a></dd>
<dd id="Trino.Parser.ID_VAR_TOKENS" class="variable"><a href="../parser.html#Parser.ID_VAR_TOKENS">ID_VAR_TOKENS</a></dd>
<dd id="Trino.Parser.INTERVAL_VARS" class="variable"><a href="../parser.html#Parser.INTERVAL_VARS">INTERVAL_VARS</a></dd>
<dd id="Trino.Parser.TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.TABLE_ALIAS_TOKENS">TABLE_ALIAS_TOKENS</a></dd>
<dd id="Trino.Parser.COMMENT_TABLE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.COMMENT_TABLE_ALIAS_TOKENS">COMMENT_TABLE_ALIAS_TOKENS</a></dd>
<dd id="Trino.Parser.UPDATE_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.UPDATE_ALIAS_TOKENS">UPDATE_ALIAS_TOKENS</a></dd>
<dd id="Trino.Parser.TRIM_TYPES" class="variable"><a href="../parser.html#Parser.TRIM_TYPES">TRIM_TYPES</a></dd>
<dd id="Trino.Parser.FUNC_TOKENS" class="variable"><a href="../parser.html#Parser.FUNC_TOKENS">FUNC_TOKENS</a></dd>
<dd id="Trino.Parser.CONJUNCTION" class="variable"><a href="../parser.html#Parser.CONJUNCTION">CONJUNCTION</a></dd>
<dd id="Trino.Parser.EQUALITY" class="variable"><a href="../parser.html#Parser.EQUALITY">EQUALITY</a></dd>
<dd id="Trino.Parser.COMPARISON" class="variable"><a href="../parser.html#Parser.COMPARISON">COMPARISON</a></dd>
<dd id="Trino.Parser.BITWISE" class="variable"><a href="../parser.html#Parser.BITWISE">BITWISE</a></dd>
<dd id="Trino.Parser.TERM" class="variable"><a href="../parser.html#Parser.TERM">TERM</a></dd>
<dd id="Trino.Parser.FACTOR" class="variable"><a href="../parser.html#Parser.FACTOR">FACTOR</a></dd>
<dd id="Trino.Parser.TIMES" class="variable"><a href="../parser.html#Parser.TIMES">TIMES</a></dd>
<dd id="Trino.Parser.TIMESTAMPS" class="variable"><a href="../parser.html#Parser.TIMESTAMPS">TIMESTAMPS</a></dd>
<dd id="Trino.Parser.SET_OPERATIONS" class="variable"><a href="../parser.html#Parser.SET_OPERATIONS">SET_OPERATIONS</a></dd>
<dd id="Trino.Parser.JOIN_METHODS" class="variable"><a href="../parser.html#Parser.JOIN_METHODS">JOIN_METHODS</a></dd>
<dd id="Trino.Parser.JOIN_SIDES" class="variable"><a href="../parser.html#Parser.JOIN_SIDES">JOIN_SIDES</a></dd>
<dd id="Trino.Parser.JOIN_KINDS" class="variable"><a href="../parser.html#Parser.JOIN_KINDS">JOIN_KINDS</a></dd>
<dd id="Trino.Parser.JOIN_HINTS" class="variable"><a href="../parser.html#Parser.JOIN_HINTS">JOIN_HINTS</a></dd>
<dd id="Trino.Parser.LAMBDAS" class="variable"><a href="../parser.html#Parser.LAMBDAS">LAMBDAS</a></dd>
<dd id="Trino.Parser.COLUMN_OPERATORS" class="variable"><a href="../parser.html#Parser.COLUMN_OPERATORS">COLUMN_OPERATORS</a></dd>
<dd id="Trino.Parser.EXPRESSION_PARSERS" class="variable"><a href="../parser.html#Parser.EXPRESSION_PARSERS">EXPRESSION_PARSERS</a></dd>
<dd id="Trino.Parser.STATEMENT_PARSERS" class="variable"><a href="../parser.html#Parser.STATEMENT_PARSERS">STATEMENT_PARSERS</a></dd>
<dd id="Trino.Parser.UNARY_PARSERS" class="variable"><a href="../parser.html#Parser.UNARY_PARSERS">UNARY_PARSERS</a></dd>
<dd id="Trino.Parser.PRIMARY_PARSERS" class="variable"><a href="../parser.html#Parser.PRIMARY_PARSERS">PRIMARY_PARSERS</a></dd>
<dd id="Trino.Parser.PLACEHOLDER_PARSERS" class="variable"><a href="../parser.html#Parser.PLACEHOLDER_PARSERS">PLACEHOLDER_PARSERS</a></dd>
<dd id="Trino.Parser.RANGE_PARSERS" class="variable"><a href="../parser.html#Parser.RANGE_PARSERS">RANGE_PARSERS</a></dd>
<dd id="Trino.Parser.PROPERTY_PARSERS" class="variable"><a href="../parser.html#Parser.PROPERTY_PARSERS">PROPERTY_PARSERS</a></dd>
<dd id="Trino.Parser.CONSTRAINT_PARSERS" class="variable"><a href="../parser.html#Parser.CONSTRAINT_PARSERS">CONSTRAINT_PARSERS</a></dd>
<dd id="Trino.Parser.ALTER_PARSERS" class="variable"><a href="../parser.html#Parser.ALTER_PARSERS">ALTER_PARSERS</a></dd>
<dd id="Trino.Parser.SCHEMA_UNNAMED_CONSTRAINTS" class="variable"><a href="../parser.html#Parser.SCHEMA_UNNAMED_CONSTRAINTS">SCHEMA_UNNAMED_CONSTRAINTS</a></dd>
<dd id="Trino.Parser.NO_PAREN_FUNCTION_PARSERS" class="variable"><a href="../parser.html#Parser.NO_PAREN_FUNCTION_PARSERS">NO_PAREN_FUNCTION_PARSERS</a></dd>
<dd id="Trino.Parser.INVALID_FUNC_NAME_TOKENS" class="variable"><a href="../parser.html#Parser.INVALID_FUNC_NAME_TOKENS">INVALID_FUNC_NAME_TOKENS</a></dd>
<dd id="Trino.Parser.FUNCTIONS_WITH_ALIASED_ARGS" class="variable"><a href="../parser.html#Parser.FUNCTIONS_WITH_ALIASED_ARGS">FUNCTIONS_WITH_ALIASED_ARGS</a></dd>
<dd id="Trino.Parser.QUERY_MODIFIER_PARSERS" class="variable"><a href="../parser.html#Parser.QUERY_MODIFIER_PARSERS">QUERY_MODIFIER_PARSERS</a></dd>
<dd id="Trino.Parser.SET_PARSERS" class="variable"><a href="../parser.html#Parser.SET_PARSERS">SET_PARSERS</a></dd>
<dd id="Trino.Parser.SHOW_PARSERS" class="variable"><a href="../parser.html#Parser.SHOW_PARSERS">SHOW_PARSERS</a></dd>
<dd id="Trino.Parser.TYPE_LITERAL_PARSERS" class="variable"><a href="../parser.html#Parser.TYPE_LITERAL_PARSERS">TYPE_LITERAL_PARSERS</a></dd>
<dd id="Trino.Parser.MODIFIABLES" class="variable"><a href="../parser.html#Parser.MODIFIABLES">MODIFIABLES</a></dd>
<dd id="Trino.Parser.DDL_SELECT_TOKENS" class="variable"><a href="../parser.html#Parser.DDL_SELECT_TOKENS">DDL_SELECT_TOKENS</a></dd>
<dd id="Trino.Parser.PRE_VOLATILE_TOKENS" class="variable"><a href="../parser.html#Parser.PRE_VOLATILE_TOKENS">PRE_VOLATILE_TOKENS</a></dd>
<dd id="Trino.Parser.TRANSACTION_KIND" class="variable"><a href="../parser.html#Parser.TRANSACTION_KIND">TRANSACTION_KIND</a></dd>
<dd id="Trino.Parser.TRANSACTION_CHARACTERISTICS" class="variable"><a href="../parser.html#Parser.TRANSACTION_CHARACTERISTICS">TRANSACTION_CHARACTERISTICS</a></dd>
<dd id="Trino.Parser.INSERT_ALTERNATIVES" class="variable"><a href="../parser.html#Parser.INSERT_ALTERNATIVES">INSERT_ALTERNATIVES</a></dd>
<dd id="Trino.Parser.CLONE_KINDS" class="variable"><a href="../parser.html#Parser.CLONE_KINDS">CLONE_KINDS</a></dd>
<dd id="Trino.Parser.TABLE_INDEX_HINT_TOKENS" class="variable"><a href="../parser.html#Parser.TABLE_INDEX_HINT_TOKENS">TABLE_INDEX_HINT_TOKENS</a></dd>
<dd id="Trino.Parser.WINDOW_ALIAS_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_ALIAS_TOKENS">WINDOW_ALIAS_TOKENS</a></dd>
<dd id="Trino.Parser.WINDOW_BEFORE_PAREN_TOKENS" class="variable"><a href="../parser.html#Parser.WINDOW_BEFORE_PAREN_TOKENS">WINDOW_BEFORE_PAREN_TOKENS</a></dd>
<dd id="Trino.Parser.WINDOW_SIDES" class="variable"><a href="../parser.html#Parser.WINDOW_SIDES">WINDOW_SIDES</a></dd>
<dd id="Trino.Parser.ADD_CONSTRAINT_TOKENS" class="variable"><a href="../parser.html#Parser.ADD_CONSTRAINT_TOKENS">ADD_CONSTRAINT_TOKENS</a></dd>
<dd id="Trino.Parser.DISTINCT_TOKENS" class="variable"><a href="../parser.html#Parser.DISTINCT_TOKENS">DISTINCT_TOKENS</a></dd>
<dd id="Trino.Parser.STRICT_CAST" class="variable"><a href="../parser.html#Parser.STRICT_CAST">STRICT_CAST</a></dd>
<dd id="Trino.Parser.CONCAT_NULL_OUTPUTS_STRING" class="variable"><a href="../parser.html#Parser.CONCAT_NULL_OUTPUTS_STRING">CONCAT_NULL_OUTPUTS_STRING</a></dd>
<dd id="Trino.Parser.PREFIXED_PIVOT_COLUMNS" class="variable"><a href="../parser.html#Parser.PREFIXED_PIVOT_COLUMNS">PREFIXED_PIVOT_COLUMNS</a></dd>
<dd id="Trino.Parser.IDENTIFY_PIVOT_STRINGS" class="variable"><a href="../parser.html#Parser.IDENTIFY_PIVOT_STRINGS">IDENTIFY_PIVOT_STRINGS</a></dd>
<dd id="Trino.Parser.LOG_BASE_FIRST" class="variable"><a href="../parser.html#Parser.LOG_BASE_FIRST">LOG_BASE_FIRST</a></dd>
<dd id="Trino.Parser.LOG_DEFAULTS_TO_LN" class="variable"><a href="../parser.html#Parser.LOG_DEFAULTS_TO_LN">LOG_DEFAULTS_TO_LN</a></dd>
<dd id="Trino.Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD" class="variable"><a href="../parser.html#Parser.ALTER_TABLE_ADD_COLUMN_KEYWORD">ALTER_TABLE_ADD_COLUMN_KEYWORD</a></dd>
<dd id="Trino.Parser.TABLESAMPLE_CSV" class="variable"><a href="../parser.html#Parser.TABLESAMPLE_CSV">TABLESAMPLE_CSV</a></dd>
<dd id="Trino.Parser.UNNEST_COLUMN_ONLY" class="variable"><a href="../parser.html#Parser.UNNEST_COLUMN_ONLY">UNNEST_COLUMN_ONLY</a></dd>
<dd id="Trino.Parser.ALIAS_POST_TABLESAMPLE" class="variable"><a href="../parser.html#Parser.ALIAS_POST_TABLESAMPLE">ALIAS_POST_TABLESAMPLE</a></dd>
<dd id="Trino.Parser.NORMALIZE_FUNCTIONS" class="variable"><a href="../parser.html#Parser.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd>
<dd id="Trino.Parser.FORMAT_MAPPING" class="variable"><a href="../parser.html#Parser.FORMAT_MAPPING">FORMAT_MAPPING</a></dd>
<dd id="Trino.Parser.error_level" class="variable"><a href="../parser.html#Parser.error_level">error_level</a></dd>
<dd id="Trino.Parser.error_message_context" class="variable"><a href="../parser.html#Parser.error_message_context">error_message_context</a></dd>
<dd id="Trino.Parser.max_errors" class="variable"><a href="../parser.html#Parser.max_errors">max_errors</a></dd>
<dd id="Trino.Parser.reset" class="function"><a href="../parser.html#Parser.reset">reset</a></dd>
<dd id="Trino.Parser.parse" class="function"><a href="../parser.html#Parser.parse">parse</a></dd>
<dd id="Trino.Parser.parse_into" class="function"><a href="../parser.html#Parser.parse_into">parse_into</a></dd>
<dd id="Trino.Parser.check_errors" class="function"><a href="../parser.html#Parser.check_errors">check_errors</a></dd>
<dd id="Trino.Parser.raise_error" class="function"><a href="../parser.html#Parser.raise_error">raise_error</a></dd>
<dd id="Trino.Parser.expression" class="function"><a href="../parser.html#Parser.expression">expression</a></dd>
<dd id="Trino.Parser.validate_expression" class="function"><a href="../parser.html#Parser.validate_expression">validate_expression</a></dd>
<dd id="Trino.Parser.errors" class="variable"><a href="../parser.html#Parser.errors">errors</a></dd>
<dd id="Trino.Parser.sql" class="variable"><a href="../parser.html#Parser.sql">sql</a></dd>
</div>
<div><dt><a href="presto.html#Presto.Parser">sqlglot.dialects.presto.Presto.Parser</a></dt>
<dd id="Trino.Parser.FUNCTIONS" class="variable"><a href="presto.html#Presto.Parser.FUNCTIONS">FUNCTIONS</a></dd>
<dd id="Trino.Parser.FUNCTION_PARSERS" class="variable"><a href="presto.html#Presto.Parser.FUNCTION_PARSERS">FUNCTION_PARSERS</a></dd>
<dd id="Trino.Parser.INDEX_OFFSET" class="variable"><a href="presto.html#Presto.Parser.INDEX_OFFSET">INDEX_OFFSET</a></dd>
<dd id="Trino.Parser.STRICT_STRING_CONCAT" class="variable"><a href="presto.html#Presto.Parser.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd>
<dd id="Trino.Parser.NULL_ORDERING" class="variable"><a href="presto.html#Presto.Parser.NULL_ORDERING">NULL_ORDERING</a></dd>
<dd id="Trino.Parser.TIME_MAPPING" class="variable"><a href="presto.html#Presto.Parser.TIME_MAPPING">TIME_MAPPING</a></dd>
</div>
</dl>
</div>
</section>
</main> </main>
<script> <script>
function escapeHTML(html) { function escapeHTML(html) {

File diff suppressed because it is too large Load diff

View file

@ -1884,6 +1884,7 @@
<dd id="Python.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="../dialects/dialect.html#Dialect.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd> <dd id="Python.IDENTIFIERS_CAN_START_WITH_DIGIT" class="variable"><a href="../dialects/dialect.html#Dialect.IDENTIFIERS_CAN_START_WITH_DIGIT">IDENTIFIERS_CAN_START_WITH_DIGIT</a></dd>
<dd id="Python.DPIPE_IS_STRING_CONCAT" class="variable"><a href="../dialects/dialect.html#Dialect.DPIPE_IS_STRING_CONCAT">DPIPE_IS_STRING_CONCAT</a></dd> <dd id="Python.DPIPE_IS_STRING_CONCAT" class="variable"><a href="../dialects/dialect.html#Dialect.DPIPE_IS_STRING_CONCAT">DPIPE_IS_STRING_CONCAT</a></dd>
<dd id="Python.STRICT_STRING_CONCAT" class="variable"><a href="../dialects/dialect.html#Dialect.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd> <dd id="Python.STRICT_STRING_CONCAT" class="variable"><a href="../dialects/dialect.html#Dialect.STRICT_STRING_CONCAT">STRICT_STRING_CONCAT</a></dd>
<dd id="Python.SUPPORTS_USER_DEFINED_TYPES" class="variable"><a href="../dialects/dialect.html#Dialect.SUPPORTS_USER_DEFINED_TYPES">SUPPORTS_USER_DEFINED_TYPES</a></dd>
<dd id="Python.NORMALIZE_FUNCTIONS" class="variable"><a href="../dialects/dialect.html#Dialect.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd> <dd id="Python.NORMALIZE_FUNCTIONS" class="variable"><a href="../dialects/dialect.html#Dialect.NORMALIZE_FUNCTIONS">NORMALIZE_FUNCTIONS</a></dd>
<dd id="Python.NULL_ORDERING" class="variable"><a href="../dialects/dialect.html#Dialect.NULL_ORDERING">NULL_ORDERING</a></dd> <dd id="Python.NULL_ORDERING" class="variable"><a href="../dialects/dialect.html#Dialect.NULL_ORDERING">NULL_ORDERING</a></dd>
<dd id="Python.DATE_FORMAT" class="variable"><a href="../dialects/dialect.html#Dialect.DATE_FORMAT">DATE_FORMAT</a></dd> <dd id="Python.DATE_FORMAT" class="variable"><a href="../dialects/dialect.html#Dialect.DATE_FORMAT">DATE_FORMAT</a></dd>
@ -2113,26 +2114,26 @@ Default: True</li>
</div> </div>
<a class="headerlink" href="#Python.Generator.can_identify"></a> <a class="headerlink" href="#Python.Generator.can_identify"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="Python.Generator.can_identify-257"><a href="#Python.Generator.can_identify-257"><span class="linenos">257</span></a> <span class="nd">@classmethod</span> <div class="pdoc-code codehilite"><pre><span></span><span id="Python.Generator.can_identify-260"><a href="#Python.Generator.can_identify-260"><span class="linenos">260</span></a> <span class="nd">@classmethod</span>
</span><span id="Python.Generator.can_identify-258"><a href="#Python.Generator.can_identify-258"><span class="linenos">258</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="Python.Generator.can_identify-261"><a href="#Python.Generator.can_identify-261"><span class="linenos">261</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="Python.Generator.can_identify-259"><a href="#Python.Generator.can_identify-259"><span class="linenos">259</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="Python.Generator.can_identify-262"><a href="#Python.Generator.can_identify-262"><span class="linenos">262</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="Python.Generator.can_identify-260"><a href="#Python.Generator.can_identify-260"><span class="linenos">260</span></a> </span><span id="Python.Generator.can_identify-263"><a href="#Python.Generator.can_identify-263"><span class="linenos">263</span></a>
</span><span id="Python.Generator.can_identify-261"><a href="#Python.Generator.can_identify-261"><span class="linenos">261</span></a><span class="sd"> Args:</span> </span><span id="Python.Generator.can_identify-264"><a href="#Python.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> Args:</span>
</span><span id="Python.Generator.can_identify-262"><a href="#Python.Generator.can_identify-262"><span class="linenos">262</span></a><span class="sd"> text: The text to check.</span> </span><span id="Python.Generator.can_identify-265"><a href="#Python.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> text: The text to check.</span>
</span><span id="Python.Generator.can_identify-263"><a href="#Python.Generator.can_identify-263"><span class="linenos">263</span></a><span class="sd"> identify:</span> </span><span id="Python.Generator.can_identify-266"><a href="#Python.Generator.can_identify-266"><span class="linenos">266</span></a><span class="sd"> identify:</span>
</span><span id="Python.Generator.can_identify-264"><a href="#Python.Generator.can_identify-264"><span class="linenos">264</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span> </span><span id="Python.Generator.can_identify-267"><a href="#Python.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> &quot;always&quot; or `True`: Always returns true.</span>
</span><span id="Python.Generator.can_identify-265"><a href="#Python.Generator.can_identify-265"><span class="linenos">265</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span> </span><span id="Python.Generator.can_identify-268"><a href="#Python.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> &quot;safe&quot;: True if the identifier is case-insensitive.</span>
</span><span id="Python.Generator.can_identify-266"><a href="#Python.Generator.can_identify-266"><span class="linenos">266</span></a> </span><span id="Python.Generator.can_identify-269"><a href="#Python.Generator.can_identify-269"><span class="linenos">269</span></a>
</span><span id="Python.Generator.can_identify-267"><a href="#Python.Generator.can_identify-267"><span class="linenos">267</span></a><span class="sd"> Returns:</span> </span><span id="Python.Generator.can_identify-270"><a href="#Python.Generator.can_identify-270"><span class="linenos">270</span></a><span class="sd"> Returns:</span>
</span><span id="Python.Generator.can_identify-268"><a href="#Python.Generator.can_identify-268"><span class="linenos">268</span></a><span class="sd"> Whether or not the given text can be identified.</span> </span><span id="Python.Generator.can_identify-271"><a href="#Python.Generator.can_identify-271"><span class="linenos">271</span></a><span class="sd"> Whether or not the given text can be identified.</span>
</span><span id="Python.Generator.can_identify-269"><a href="#Python.Generator.can_identify-269"><span class="linenos">269</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="Python.Generator.can_identify-272"><a href="#Python.Generator.can_identify-272"><span class="linenos">272</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="Python.Generator.can_identify-270"><a href="#Python.Generator.can_identify-270"><span class="linenos">270</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="Python.Generator.can_identify-273"><a href="#Python.Generator.can_identify-273"><span class="linenos">273</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="Python.Generator.can_identify-271"><a href="#Python.Generator.can_identify-271"><span class="linenos">271</span></a> <span class="k">return</span> <span class="kc">True</span> </span><span id="Python.Generator.can_identify-274"><a href="#Python.Generator.can_identify-274"><span class="linenos">274</span></a> <span class="k">return</span> <span class="kc">True</span>
</span><span id="Python.Generator.can_identify-272"><a href="#Python.Generator.can_identify-272"><span class="linenos">272</span></a>
</span><span id="Python.Generator.can_identify-273"><a href="#Python.Generator.can_identify-273"><span class="linenos">273</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="Python.Generator.can_identify-274"><a href="#Python.Generator.can_identify-274"><span class="linenos">274</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="Python.Generator.can_identify-275"><a href="#Python.Generator.can_identify-275"><span class="linenos">275</span></a> </span><span id="Python.Generator.can_identify-275"><a href="#Python.Generator.can_identify-275"><span class="linenos">275</span></a>
</span><span id="Python.Generator.can_identify-276"><a href="#Python.Generator.can_identify-276"><span class="linenos">276</span></a> <span class="k">return</span> <span class="kc">False</span> </span><span id="Python.Generator.can_identify-276"><a href="#Python.Generator.can_identify-276"><span class="linenos">276</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="Python.Generator.can_identify-277"><a href="#Python.Generator.can_identify-277"><span class="linenos">277</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="Python.Generator.can_identify-278"><a href="#Python.Generator.can_identify-278"><span class="linenos">278</span></a>
</span><span id="Python.Generator.can_identify-279"><a href="#Python.Generator.can_identify-279"><span class="linenos">279</span></a> <span class="k">return</span> <span class="kc">False</span>
</span></pre></div> </span></pre></div>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

View file

@ -568,7 +568,7 @@ queries if it would result in multiple table selects in a single query:</p>
<div class="attr variable"> <div class="attr variable">
<span class="name">UNMERGABLE_ARGS</span> = <span class="name">UNMERGABLE_ARGS</span> =
<input id="UNMERGABLE_ARGS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <input id="UNMERGABLE_ARGS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="UNMERGABLE_ARGS-view-value"></label><span class="default_value">{&#39;settings&#39;, &#39;kind&#39;, &#39;sample&#39;, &#39;windows&#39;, &#39;cluster&#39;, &#39;into&#39;, &#39;match&#39;, &#39;limit&#39;, &#39;having&#39;, &#39;group&#39;, &#39;format&#39;, &#39;qualify&#39;, &#39;distinct&#39;, &#39;with&#39;, &#39;laterals&#39;, &#39;pivots&#39;, &#39;connect&#39;, &#39;offset&#39;, &#39;distribute&#39;, &#39;sort&#39;, &#39;locks&#39;}</span> <label class="view-value-button pdoc-button" for="UNMERGABLE_ARGS-view-value"></label><span class="default_value">{&#39;group&#39;, &#39;locks&#39;, &#39;cluster&#39;, &#39;windows&#39;, &#39;sort&#39;, &#39;limit&#39;, &#39;sample&#39;, &#39;kind&#39;, &#39;having&#39;, &#39;settings&#39;, &#39;with&#39;, &#39;distribute&#39;, &#39;laterals&#39;, &#39;match&#39;, &#39;qualify&#39;, &#39;format&#39;, &#39;connect&#39;, &#39;offset&#39;, &#39;distinct&#39;, &#39;pivots&#39;, &#39;into&#39;}</span>
</div> </div>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -555,140 +555,141 @@
</span><span id="L-398"><a href="#L-398"><span class="linenos">398</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="L-398"><a href="#L-398"><span class="linenos">398</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-399"><a href="#L-399"><span class="linenos">399</span></a> <span class="k">if</span> <span class="n">schema_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">:</span> </span><span id="L-399"><a href="#L-399"><span class="linenos">399</span></a> <span class="k">if</span> <span class="n">schema_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">:</span>
</span><span id="L-400"><a href="#L-400"><span class="linenos">400</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">dialect</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span> </span><span id="L-400"><a href="#L-400"><span class="linenos">400</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">dialect</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span>
</span><span id="L-401"><a href="#L-401"><span class="linenos">401</span></a> </span><span id="L-401"><a href="#L-401"><span class="linenos">401</span></a> <span class="n">udt</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span><span class="o">.</span><span class="n">SUPPORTS_USER_DEFINED_TYPES</span>
</span><span id="L-402"><a href="#L-402"><span class="linenos">402</span></a> <span class="k">try</span><span class="p">:</span> </span><span id="L-402"><a href="#L-402"><span class="linenos">402</span></a>
</span><span id="L-403"><a href="#L-403"><span class="linenos">403</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">schema_type</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span> </span><span id="L-403"><a href="#L-403"><span class="linenos">403</span></a> <span class="k">try</span><span class="p">:</span>
</span><span id="L-404"><a href="#L-404"><span class="linenos">404</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">[</span><span class="n">schema_type</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression</span> </span><span id="L-404"><a href="#L-404"><span class="linenos">404</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">schema_type</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="n">udt</span><span class="p">)</span>
</span><span id="L-405"><a href="#L-405"><span class="linenos">405</span></a> <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span> </span><span id="L-405"><a href="#L-405"><span class="linenos">405</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">[</span><span class="n">schema_type</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression</span>
</span><span id="L-406"><a href="#L-406"><span class="linenos">406</span></a> <span class="n">in_dialect</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; in dialect </span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">dialect</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span> </span><span id="L-406"><a href="#L-406"><span class="linenos">406</span></a> <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
</span><span id="L-407"><a href="#L-407"><span class="linenos">407</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to build type &#39;</span><span class="si">{</span><span class="n">schema_type</span><span class="si">}</span><span class="s2">&#39;</span><span class="si">{</span><span class="n">in_dialect</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span> </span><span id="L-407"><a href="#L-407"><span class="linenos">407</span></a> <span class="n">in_dialect</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; in dialect </span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">dialect</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="L-408"><a href="#L-408"><span class="linenos">408</span></a> </span><span id="L-408"><a href="#L-408"><span class="linenos">408</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to build type &#39;</span><span class="si">{</span><span class="n">schema_type</span><span class="si">}</span><span class="s2">&#39;</span><span class="si">{</span><span class="n">in_dialect</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
</span><span id="L-409"><a href="#L-409"><span class="linenos">409</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">[</span><span class="n">schema_type</span><span class="p">]</span> </span><span id="L-409"><a href="#L-409"><span class="linenos">409</span></a>
</span><span id="L-410"><a href="#L-410"><span class="linenos">410</span></a> </span><span id="L-410"><a href="#L-410"><span class="linenos">410</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">[</span><span class="n">schema_type</span><span class="p">]</span>
</span><span id="L-411"><a href="#L-411"><span class="linenos">411</span></a> </span><span id="L-411"><a href="#L-411"><span class="linenos">411</span></a>
</span><span id="L-412"><a href="#L-412"><span class="linenos">412</span></a><span class="k">def</span> <span class="nf">normalize_name</span><span class="p">(</span> </span><span id="L-412"><a href="#L-412"><span class="linenos">412</span></a>
</span><span id="L-413"><a href="#L-413"><span class="linenos">413</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> </span><span id="L-413"><a href="#L-413"><span class="linenos">413</span></a><span class="k">def</span> <span class="nf">normalize_name</span><span class="p">(</span>
</span><span id="L-414"><a href="#L-414"><span class="linenos">414</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> </span><span id="L-414"><a href="#L-414"><span class="linenos">414</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span>
</span><span id="L-415"><a href="#L-415"><span class="linenos">415</span></a> <span class="n">is_table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> </span><span id="L-415"><a href="#L-415"><span class="linenos">415</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="L-416"><a href="#L-416"><span class="linenos">416</span></a> <span class="n">normalize</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> </span><span id="L-416"><a href="#L-416"><span class="linenos">416</span></a> <span class="n">is_table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="L-417"><a href="#L-417"><span class="linenos">417</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span> </span><span id="L-417"><a href="#L-417"><span class="linenos">417</span></a> <span class="n">normalize</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
</span><span id="L-418"><a href="#L-418"><span class="linenos">418</span></a> <span class="k">try</span><span class="p">:</span> </span><span id="L-418"><a href="#L-418"><span class="linenos">418</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="L-419"><a href="#L-419"><span class="linenos">419</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> </span><span id="L-419"><a href="#L-419"><span class="linenos">419</span></a> <span class="k">try</span><span class="p">:</span>
</span><span id="L-420"><a href="#L-420"><span class="linenos">420</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> </span><span id="L-420"><a href="#L-420"><span class="linenos">420</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span>
</span><span id="L-421"><a href="#L-421"><span class="linenos">421</span></a> <span class="k">return</span> <span class="n">name</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="n">name</span><span class="o">.</span><span class="n">name</span> </span><span id="L-421"><a href="#L-421"><span class="linenos">421</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span>
</span><span id="L-422"><a href="#L-422"><span class="linenos">422</span></a> </span><span id="L-422"><a href="#L-422"><span class="linenos">422</span></a> <span class="k">return</span> <span class="n">name</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="n">name</span><span class="o">.</span><span class="n">name</span>
</span><span id="L-423"><a href="#L-423"><span class="linenos">423</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">identifier</span><span class="o">.</span><span class="n">name</span> </span><span id="L-423"><a href="#L-423"><span class="linenos">423</span></a>
</span><span id="L-424"><a href="#L-424"><span class="linenos">424</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">normalize</span><span class="p">:</span> </span><span id="L-424"><a href="#L-424"><span class="linenos">424</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">identifier</span><span class="o">.</span><span class="n">name</span>
</span><span id="L-425"><a href="#L-425"><span class="linenos">425</span></a> <span class="k">return</span> <span class="n">name</span> </span><span id="L-425"><a href="#L-425"><span class="linenos">425</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">normalize</span><span class="p">:</span>
</span><span id="L-426"><a href="#L-426"><span class="linenos">426</span></a> </span><span id="L-426"><a href="#L-426"><span class="linenos">426</span></a> <span class="k">return</span> <span class="n">name</span>
</span><span id="L-427"><a href="#L-427"><span class="linenos">427</span></a> <span class="c1"># This can be useful for normalize_identifier</span> </span><span id="L-427"><a href="#L-427"><span class="linenos">427</span></a>
</span><span id="L-428"><a href="#L-428"><span class="linenos">428</span></a> <span class="n">identifier</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">&quot;is_table&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">is_table</span> </span><span id="L-428"><a href="#L-428"><span class="linenos">428</span></a> <span class="c1"># This can be useful for normalize_identifier</span>
</span><span id="L-429"><a href="#L-429"><span class="linenos">429</span></a> <span class="k">return</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span><span 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-429"><a href="#L-429"><span class="linenos">429</span></a> <span class="n">identifier</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">&quot;is_table&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">is_table</span>
</span><span id="L-430"><a href="#L-430"><span class="linenos">430</span></a> </span><span id="L-430"><a href="#L-430"><span class="linenos">430</span></a> <span class="k">return</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span><span 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-431"><a href="#L-431"><span class="linenos">431</span></a> </span><span id="L-431"><a href="#L-431"><span class="linenos">431</span></a>
</span><span id="L-432"><a href="#L-432"><span class="linenos">432</span></a><span class="k">def</span> <span class="nf">ensure_schema</span><span class="p">(</span><span class="n">schema</span><span class="p">:</span> <span class="n">Schema</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Schema</span><span class="p">:</span> </span><span id="L-432"><a href="#L-432"><span class="linenos">432</span></a>
</span><span id="L-433"><a href="#L-433"><span class="linenos">433</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="n">Schema</span><span class="p">):</span> </span><span id="L-433"><a href="#L-433"><span class="linenos">433</span></a><span class="k">def</span> <span class="nf">ensure_schema</span><span class="p">(</span><span class="n">schema</span><span class="p">:</span> <span class="n">Schema</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Schema</span><span class="p">:</span>
</span><span id="L-434"><a href="#L-434"><span class="linenos">434</span></a> <span class="k">return</span> <span class="n">schema</span> </span><span id="L-434"><a href="#L-434"><span class="linenos">434</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="n">Schema</span><span class="p">):</span>
</span><span id="L-435"><a href="#L-435"><span class="linenos">435</span></a> </span><span id="L-435"><a href="#L-435"><span class="linenos">435</span></a> <span class="k">return</span> <span class="n">schema</span>
</span><span id="L-436"><a href="#L-436"><span class="linenos">436</span></a> <span class="k">return</span> <span class="n">MappingSchema</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> </span><span id="L-436"><a href="#L-436"><span class="linenos">436</span></a>
</span><span id="L-437"><a href="#L-437"><span class="linenos">437</span></a> </span><span id="L-437"><a href="#L-437"><span class="linenos">437</span></a> <span class="k">return</span> <span class="n">MappingSchema</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span><span id="L-438"><a href="#L-438"><span class="linenos">438</span></a> </span><span id="L-438"><a href="#L-438"><span class="linenos">438</span></a>
</span><span id="L-439"><a href="#L-439"><span class="linenos">439</span></a><span class="k">def</span> <span class="nf">ensure_column_mapping</span><span class="p">(</span><span class="n">mapping</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ColumnMapping</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span> </span><span id="L-439"><a href="#L-439"><span class="linenos">439</span></a>
</span><span id="L-440"><a href="#L-440"><span class="linenos">440</span></a> <span class="k">if</span> <span class="n">mapping</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> </span><span id="L-440"><a href="#L-440"><span class="linenos">440</span></a><span class="k">def</span> <span class="nf">ensure_column_mapping</span><span class="p">(</span><span class="n">mapping</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ColumnMapping</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span>
</span><span id="L-441"><a href="#L-441"><span class="linenos">441</span></a> <span class="k">return</span> <span class="p">{}</span> </span><span id="L-441"><a href="#L-441"><span class="linenos">441</span></a> <span class="k">if</span> <span class="n">mapping</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="L-442"><a href="#L-442"><span class="linenos">442</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> </span><span id="L-442"><a href="#L-442"><span class="linenos">442</span></a> <span class="k">return</span> <span class="p">{}</span>
</span><span id="L-443"><a href="#L-443"><span class="linenos">443</span></a> <span class="k">return</span> <span class="n">mapping</span> </span><span id="L-443"><a href="#L-443"><span class="linenos">443</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
</span><span id="L-444"><a href="#L-444"><span class="linenos">444</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> </span><span id="L-444"><a href="#L-444"><span class="linenos">444</span></a> <span class="k">return</span> <span class="n">mapping</span>
</span><span id="L-445"><a href="#L-445"><span class="linenos">445</span></a> <span class="n">col_name_type_strs</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mapping</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;,&quot;</span><span class="p">)]</span> </span><span id="L-445"><a href="#L-445"><span class="linenos">445</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
</span><span id="L-446"><a href="#L-446"><span class="linenos">446</span></a> <span class="k">return</span> <span class="p">{</span> </span><span id="L-446"><a href="#L-446"><span class="linenos">446</span></a> <span class="n">col_name_type_strs</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mapping</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;,&quot;</span><span class="p">)]</span>
</span><span id="L-447"><a href="#L-447"><span class="linenos">447</span></a> <span class="n">name_type_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;:&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="n">name_type_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;:&quot;</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> </span><span id="L-447"><a href="#L-447"><span class="linenos">447</span></a> <span class="k">return</span> <span class="p">{</span>
</span><span id="L-448"><a href="#L-448"><span class="linenos">448</span></a> <span class="k">for</span> <span class="n">name_type_str</span> <span class="ow">in</span> <span class="n">col_name_type_strs</span> </span><span id="L-448"><a href="#L-448"><span class="linenos">448</span></a> <span class="n">name_type_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;:&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="n">name_type_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;:&quot;</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
</span><span id="L-449"><a href="#L-449"><span class="linenos">449</span></a> <span class="p">}</span> </span><span id="L-449"><a href="#L-449"><span class="linenos">449</span></a> <span class="k">for</span> <span class="n">name_type_str</span> <span class="ow">in</span> <span class="n">col_name_type_strs</span>
</span><span id="L-450"><a href="#L-450"><span class="linenos">450</span></a> <span class="c1"># Check if mapping looks like a DataFrame StructType</span> </span><span id="L-450"><a href="#L-450"><span class="linenos">450</span></a> <span class="p">}</span>
</span><span id="L-451"><a href="#L-451"><span class="linenos">451</span></a> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="s2">&quot;simpleString&quot;</span><span class="p">):</span> </span><span id="L-451"><a href="#L-451"><span class="linenos">451</span></a> <span class="c1"># Check if mapping looks like a DataFrame StructType</span>
</span><span id="L-452"><a href="#L-452"><span class="linenos">452</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">struct_field</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> <span class="n">struct_field</span><span class="o">.</span><span class="n">dataType</span><span class="o">.</span><span class="n">simpleString</span><span class="p">()</span> <span class="k">for</span> <span class="n">struct_field</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">}</span> </span><span id="L-452"><a href="#L-452"><span class="linenos">452</span></a> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="s2">&quot;simpleString&quot;</span><span class="p">):</span>
</span><span id="L-453"><a href="#L-453"><span class="linenos">453</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> </span><span id="L-453"><a href="#L-453"><span class="linenos">453</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">struct_field</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> <span class="n">struct_field</span><span class="o">.</span><span class="n">dataType</span><span class="o">.</span><span class="n">simpleString</span><span class="p">()</span> <span class="k">for</span> <span class="n">struct_field</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">}</span>
</span><span id="L-454"><a href="#L-454"><span class="linenos">454</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">x</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">}</span> </span><span id="L-454"><a href="#L-454"><span class="linenos">454</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
</span><span id="L-455"><a href="#L-455"><span class="linenos">455</span></a> </span><span id="L-455"><a href="#L-455"><span class="linenos">455</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">x</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">}</span>
</span><span id="L-456"><a href="#L-456"><span class="linenos">456</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Invalid mapping provided: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">mapping</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> </span><span id="L-456"><a href="#L-456"><span class="linenos">456</span></a>
</span><span id="L-457"><a href="#L-457"><span class="linenos">457</span></a> </span><span id="L-457"><a href="#L-457"><span class="linenos">457</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Invalid mapping provided: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">mapping</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="L-458"><a href="#L-458"><span class="linenos">458</span></a> </span><span id="L-458"><a href="#L-458"><span class="linenos">458</span></a>
</span><span id="L-459"><a href="#L-459"><span class="linenos">459</span></a><span class="k">def</span> <span class="nf">flatten_schema</span><span class="p">(</span> </span><span id="L-459"><a href="#L-459"><span class="linenos">459</span></a>
</span><span id="L-460"><a href="#L-460"><span class="linenos">460</span></a> <span class="n">schema</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">depth</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">keys</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="L-460"><a href="#L-460"><span class="linenos">460</span></a><span class="k">def</span> <span class="nf">flatten_schema</span><span class="p">(</span>
</span><span id="L-461"><a href="#L-461"><span class="linenos">461</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span> </span><span id="L-461"><a href="#L-461"><span class="linenos">461</span></a> <span class="n">schema</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">depth</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">keys</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="L-462"><a href="#L-462"><span class="linenos">462</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="L-462"><a href="#L-462"><span class="linenos">462</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
</span><span id="L-463"><a href="#L-463"><span class="linenos">463</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="n">keys</span> <span class="ow">or</span> <span class="p">[]</span> </span><span id="L-463"><a href="#L-463"><span class="linenos">463</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="L-464"><a href="#L-464"><span class="linenos">464</span></a> </span><span id="L-464"><a href="#L-464"><span class="linenos">464</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="n">keys</span> <span class="ow">or</span> <span class="p">[]</span>
</span><span id="L-465"><a href="#L-465"><span class="linenos">465</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">schema</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> </span><span id="L-465"><a href="#L-465"><span class="linenos">465</span></a>
</span><span id="L-466"><a href="#L-466"><span class="linenos">466</span></a> <span class="k">if</span> <span class="n">depth</span> <span class="o">&gt;=</span> <span class="mi">2</span><span class="p">:</span> </span><span id="L-466"><a href="#L-466"><span class="linenos">466</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">schema</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
</span><span id="L-467"><a href="#L-467"><span class="linenos">467</span></a> <span class="n">tables</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">flatten_schema</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">depth</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">keys</span> <span class="o">+</span> <span class="p">[</span><span class="n">k</span><span class="p">]))</span> </span><span id="L-467"><a href="#L-467"><span class="linenos">467</span></a> <span class="k">if</span> <span class="n">depth</span> <span class="o">&gt;=</span> <span class="mi">2</span><span class="p">:</span>
</span><span id="L-468"><a href="#L-468"><span class="linenos">468</span></a> <span class="k">elif</span> <span class="n">depth</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> </span><span id="L-468"><a href="#L-468"><span class="linenos">468</span></a> <span class="n">tables</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">flatten_schema</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">depth</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">keys</span> <span class="o">+</span> <span class="p">[</span><span class="n">k</span><span class="p">]))</span>
</span><span id="L-469"><a href="#L-469"><span class="linenos">469</span></a> <span class="n">tables</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">keys</span> <span class="o">+</span> <span class="p">[</span><span class="n">k</span><span class="p">])</span> </span><span id="L-469"><a href="#L-469"><span class="linenos">469</span></a> <span class="k">elif</span> <span class="n">depth</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-470"><a href="#L-470"><span class="linenos">470</span></a> </span><span id="L-470"><a href="#L-470"><span class="linenos">470</span></a> <span class="n">tables</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">keys</span> <span class="o">+</span> <span class="p">[</span><span class="n">k</span><span class="p">])</span>
</span><span id="L-471"><a href="#L-471"><span class="linenos">471</span></a> <span class="k">return</span> <span class="n">tables</span> </span><span id="L-471"><a href="#L-471"><span class="linenos">471</span></a>
</span><span id="L-472"><a href="#L-472"><span class="linenos">472</span></a> </span><span id="L-472"><a href="#L-472"><span class="linenos">472</span></a> <span class="k">return</span> <span class="n">tables</span>
</span><span id="L-473"><a href="#L-473"><span class="linenos">473</span></a> </span><span id="L-473"><a href="#L-473"><span class="linenos">473</span></a>
</span><span id="L-474"><a href="#L-474"><span class="linenos">474</span></a><span class="k">def</span> <span class="nf">nested_get</span><span class="p">(</span> </span><span id="L-474"><a href="#L-474"><span class="linenos">474</span></a>
</span><span id="L-475"><a href="#L-475"><span class="linenos">475</span></a> <span class="n">d</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="o">*</span><span class="n">path</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">],</span> <span class="n">raise_on_missing</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="L-475"><a href="#L-475"><span class="linenos">475</span></a><span class="k">def</span> <span class="nf">nested_get</span><span class="p">(</span>
</span><span id="L-476"><a href="#L-476"><span class="linenos">476</span></a><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">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]:</span> </span><span id="L-476"><a href="#L-476"><span class="linenos">476</span></a> <span class="n">d</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="o">*</span><span class="n">path</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">],</span> <span class="n">raise_on_missing</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="L-477"><a href="#L-477"><span class="linenos">477</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> </span><span id="L-477"><a href="#L-477"><span class="linenos">477</span></a><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">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]:</span>
</span><span id="L-478"><a href="#L-478"><span class="linenos">478</span></a><span class="sd"> Get a value for a nested dictionary.</span> </span><span id="L-478"><a href="#L-478"><span class="linenos">478</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="L-479"><a href="#L-479"><span class="linenos">479</span></a> </span><span id="L-479"><a href="#L-479"><span class="linenos">479</span></a><span class="sd"> Get a value for a nested dictionary.</span>
</span><span id="L-480"><a href="#L-480"><span class="linenos">480</span></a><span class="sd"> Args:</span> </span><span id="L-480"><a href="#L-480"><span class="linenos">480</span></a>
</span><span id="L-481"><a href="#L-481"><span class="linenos">481</span></a><span class="sd"> d: the dictionary to search.</span> </span><span id="L-481"><a href="#L-481"><span class="linenos">481</span></a><span class="sd"> Args:</span>
</span><span id="L-482"><a href="#L-482"><span class="linenos">482</span></a><span class="sd"> *path: tuples of (name, key), where:</span> </span><span id="L-482"><a href="#L-482"><span class="linenos">482</span></a><span class="sd"> d: the dictionary to search.</span>
</span><span id="L-483"><a href="#L-483"><span class="linenos">483</span></a><span class="sd"> `key` is the key in the dictionary to get.</span> </span><span id="L-483"><a href="#L-483"><span class="linenos">483</span></a><span class="sd"> *path: tuples of (name, key), where:</span>
</span><span id="L-484"><a href="#L-484"><span class="linenos">484</span></a><span class="sd"> `name` is a string to use in the error if `key` isn&#39;t found.</span> </span><span id="L-484"><a href="#L-484"><span class="linenos">484</span></a><span class="sd"> `key` is the key in the dictionary to get.</span>
</span><span id="L-485"><a href="#L-485"><span class="linenos">485</span></a> </span><span id="L-485"><a href="#L-485"><span class="linenos">485</span></a><span class="sd"> `name` is a string to use in the error if `key` isn&#39;t found.</span>
</span><span id="L-486"><a href="#L-486"><span class="linenos">486</span></a><span class="sd"> Returns:</span> </span><span id="L-486"><a href="#L-486"><span class="linenos">486</span></a>
</span><span id="L-487"><a href="#L-487"><span class="linenos">487</span></a><span class="sd"> The value or None if it doesn&#39;t exist.</span> </span><span id="L-487"><a href="#L-487"><span class="linenos">487</span></a><span class="sd"> Returns:</span>
</span><span id="L-488"><a href="#L-488"><span class="linenos">488</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="L-488"><a href="#L-488"><span class="linenos">488</span></a><span class="sd"> The value or None if it doesn&#39;t exist.</span>
</span><span id="L-489"><a href="#L-489"><span class="linenos">489</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">path</span><span class="p">:</span> </span><span id="L-489"><a href="#L-489"><span class="linenos">489</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-490"><a href="#L-490"><span class="linenos">490</span></a> <span class="n">d</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="c1"># type: ignore</span> </span><span id="L-490"><a href="#L-490"><span class="linenos">490</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">path</span><span class="p">:</span>
</span><span id="L-491"><a href="#L-491"><span class="linenos">491</span></a> <span class="k">if</span> <span class="n">d</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> </span><span id="L-491"><a href="#L-491"><span class="linenos">491</span></a> <span class="n">d</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="c1"># type: ignore</span>
</span><span id="L-492"><a href="#L-492"><span class="linenos">492</span></a> <span class="k">if</span> <span class="n">raise_on_missing</span><span class="p">:</span> </span><span id="L-492"><a href="#L-492"><span class="linenos">492</span></a> <span class="k">if</span> <span class="n">d</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="L-493"><a href="#L-493"><span class="linenos">493</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;table&quot;</span> <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">&quot;this&quot;</span> <span class="k">else</span> <span class="n">name</span> </span><span id="L-493"><a href="#L-493"><span class="linenos">493</span></a> <span class="k">if</span> <span class="n">raise_on_missing</span><span class="p">:</span>
</span><span id="L-494"><a href="#L-494"><span class="linenos">494</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Unknown </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> </span><span id="L-494"><a href="#L-494"><span class="linenos">494</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;table&quot;</span> <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">&quot;this&quot;</span> <span class="k">else</span> <span class="n">name</span>
</span><span id="L-495"><a href="#L-495"><span class="linenos">495</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="L-495"><a href="#L-495"><span class="linenos">495</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Unknown </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="L-496"><a href="#L-496"><span class="linenos">496</span></a> </span><span id="L-496"><a href="#L-496"><span class="linenos">496</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="L-497"><a href="#L-497"><span class="linenos">497</span></a> <span class="k">return</span> <span class="n">d</span> </span><span id="L-497"><a href="#L-497"><span class="linenos">497</span></a>
</span><span id="L-498"><a href="#L-498"><span class="linenos">498</span></a> </span><span id="L-498"><a href="#L-498"><span class="linenos">498</span></a> <span class="k">return</span> <span class="n">d</span>
</span><span id="L-499"><a href="#L-499"><span class="linenos">499</span></a> </span><span id="L-499"><a href="#L-499"><span class="linenos">499</span></a>
</span><span id="L-500"><a href="#L-500"><span class="linenos">500</span></a><span class="k">def</span> <span class="nf">nested_set</span><span class="p">(</span><span class="n">d</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">keys</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span> </span><span id="L-500"><a href="#L-500"><span class="linenos">500</span></a>
</span><span id="L-501"><a href="#L-501"><span class="linenos">501</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> </span><span id="L-501"><a href="#L-501"><span class="linenos">501</span></a><span class="k">def</span> <span class="nf">nested_set</span><span class="p">(</span><span class="n">d</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">keys</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span>
</span><span id="L-502"><a href="#L-502"><span class="linenos">502</span></a><span class="sd"> In-place set a value for a nested dictionary</span> </span><span id="L-502"><a href="#L-502"><span class="linenos">502</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="L-503"><a href="#L-503"><span class="linenos">503</span></a> </span><span id="L-503"><a href="#L-503"><span class="linenos">503</span></a><span class="sd"> In-place set a value for a nested dictionary</span>
</span><span id="L-504"><a href="#L-504"><span class="linenos">504</span></a><span class="sd"> Example:</span> </span><span id="L-504"><a href="#L-504"><span class="linenos">504</span></a>
</span><span id="L-505"><a href="#L-505"><span class="linenos">505</span></a><span class="sd"> &gt;&gt;&gt; nested_set({}, [&quot;top_key&quot;, &quot;second_key&quot;], &quot;value&quot;)</span> </span><span id="L-505"><a href="#L-505"><span class="linenos">505</span></a><span class="sd"> Example:</span>
</span><span id="L-506"><a href="#L-506"><span class="linenos">506</span></a><span class="sd"> {&#39;top_key&#39;: {&#39;second_key&#39;: &#39;value&#39;}}</span> </span><span id="L-506"><a href="#L-506"><span class="linenos">506</span></a><span class="sd"> &gt;&gt;&gt; nested_set({}, [&quot;top_key&quot;, &quot;second_key&quot;], &quot;value&quot;)</span>
</span><span id="L-507"><a href="#L-507"><span class="linenos">507</span></a> </span><span id="L-507"><a href="#L-507"><span class="linenos">507</span></a><span class="sd"> {&#39;top_key&#39;: {&#39;second_key&#39;: &#39;value&#39;}}</span>
</span><span id="L-508"><a href="#L-508"><span class="linenos">508</span></a><span class="sd"> &gt;&gt;&gt; nested_set({&quot;top_key&quot;: {&quot;third_key&quot;: &quot;third_value&quot;}}, [&quot;top_key&quot;, &quot;second_key&quot;], &quot;value&quot;)</span> </span><span id="L-508"><a href="#L-508"><span class="linenos">508</span></a>
</span><span id="L-509"><a href="#L-509"><span class="linenos">509</span></a><span class="sd"> {&#39;top_key&#39;: {&#39;third_key&#39;: &#39;third_value&#39;, &#39;second_key&#39;: &#39;value&#39;}}</span> </span><span id="L-509"><a href="#L-509"><span class="linenos">509</span></a><span class="sd"> &gt;&gt;&gt; nested_set({&quot;top_key&quot;: {&quot;third_key&quot;: &quot;third_value&quot;}}, [&quot;top_key&quot;, &quot;second_key&quot;], &quot;value&quot;)</span>
</span><span id="L-510"><a href="#L-510"><span class="linenos">510</span></a> </span><span id="L-510"><a href="#L-510"><span class="linenos">510</span></a><span class="sd"> {&#39;top_key&#39;: {&#39;third_key&#39;: &#39;third_value&#39;, &#39;second_key&#39;: &#39;value&#39;}}</span>
</span><span id="L-511"><a href="#L-511"><span class="linenos">511</span></a><span class="sd"> Args:</span> </span><span id="L-511"><a href="#L-511"><span class="linenos">511</span></a>
</span><span id="L-512"><a href="#L-512"><span class="linenos">512</span></a><span class="sd"> d: dictionary to update.</span> </span><span id="L-512"><a href="#L-512"><span class="linenos">512</span></a><span class="sd"> Args:</span>
</span><span id="L-513"><a href="#L-513"><span class="linenos">513</span></a><span class="sd"> keys: the keys that makeup the path to `value`.</span> </span><span id="L-513"><a href="#L-513"><span class="linenos">513</span></a><span class="sd"> d: dictionary to update.</span>
</span><span id="L-514"><a href="#L-514"><span class="linenos">514</span></a><span class="sd"> value: the value to set in the dictionary for the given key path.</span> </span><span id="L-514"><a href="#L-514"><span class="linenos">514</span></a><span class="sd"> keys: the keys that makeup the path to `value`.</span>
</span><span id="L-515"><a href="#L-515"><span class="linenos">515</span></a> </span><span id="L-515"><a href="#L-515"><span class="linenos">515</span></a><span class="sd"> value: the value to set in the dictionary for the given key path.</span>
</span><span id="L-516"><a href="#L-516"><span class="linenos">516</span></a><span class="sd"> Returns:</span> </span><span id="L-516"><a href="#L-516"><span class="linenos">516</span></a>
</span><span id="L-517"><a href="#L-517"><span class="linenos">517</span></a><span class="sd"> The (possibly) updated dictionary.</span> </span><span id="L-517"><a href="#L-517"><span class="linenos">517</span></a><span class="sd"> Returns:</span>
</span><span id="L-518"><a href="#L-518"><span class="linenos">518</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="L-518"><a href="#L-518"><span class="linenos">518</span></a><span class="sd"> The (possibly) updated dictionary.</span>
</span><span id="L-519"><a href="#L-519"><span class="linenos">519</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">keys</span><span class="p">:</span> </span><span id="L-519"><a href="#L-519"><span class="linenos">519</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="L-520"><a href="#L-520"><span class="linenos">520</span></a> <span class="k">return</span> <span class="n">d</span> </span><span id="L-520"><a href="#L-520"><span class="linenos">520</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">keys</span><span class="p">:</span>
</span><span id="L-521"><a href="#L-521"><span class="linenos">521</span></a> </span><span id="L-521"><a href="#L-521"><span class="linenos">521</span></a> <span class="k">return</span> <span class="n">d</span>
</span><span id="L-522"><a href="#L-522"><span class="linenos">522</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">keys</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> </span><span id="L-522"><a href="#L-522"><span class="linenos">522</span></a>
</span><span id="L-523"><a href="#L-523"><span class="linenos">523</span></a> <span class="n">d</span><span class="p">[</span><span class="n">keys</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> <span class="o">=</span> <span class="n">value</span> </span><span id="L-523"><a href="#L-523"><span class="linenos">523</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">keys</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-524"><a href="#L-524"><span class="linenos">524</span></a> <span class="k">return</span> <span class="n">d</span> </span><span id="L-524"><a href="#L-524"><span class="linenos">524</span></a> <span class="n">d</span><span class="p">[</span><span class="n">keys</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> <span class="o">=</span> <span class="n">value</span>
</span><span id="L-525"><a href="#L-525"><span class="linenos">525</span></a> </span><span id="L-525"><a href="#L-525"><span class="linenos">525</span></a> <span class="k">return</span> <span class="n">d</span>
</span><span id="L-526"><a href="#L-526"><span class="linenos">526</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">d</span> </span><span id="L-526"><a href="#L-526"><span class="linenos">526</span></a>
</span><span id="L-527"><a href="#L-527"><span class="linenos">527</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">keys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]:</span> </span><span id="L-527"><a href="#L-527"><span class="linenos">527</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">d</span>
</span><span id="L-528"><a href="#L-528"><span class="linenos">528</span></a> <span class="k">if</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">subd</span><span class="p">:</span> </span><span id="L-528"><a href="#L-528"><span class="linenos">528</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">keys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]:</span>
</span><span id="L-529"><a href="#L-529"><span class="linenos">529</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">subd</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="p">{})</span> </span><span id="L-529"><a href="#L-529"><span class="linenos">529</span></a> <span class="k">if</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">subd</span><span class="p">:</span>
</span><span id="L-530"><a href="#L-530"><span class="linenos">530</span></a> <span class="k">else</span><span class="p">:</span> </span><span id="L-530"><a href="#L-530"><span class="linenos">530</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">subd</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="p">{})</span>
</span><span id="L-531"><a href="#L-531"><span class="linenos">531</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">subd</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> </span><span id="L-531"><a href="#L-531"><span class="linenos">531</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-532"><a href="#L-532"><span class="linenos">532</span></a> </span><span id="L-532"><a href="#L-532"><span class="linenos">532</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">subd</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
</span><span id="L-533"><a href="#L-533"><span class="linenos">533</span></a> <span class="n">subd</span><span class="p">[</span><span class="n">keys</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">value</span> </span><span id="L-533"><a href="#L-533"><span class="linenos">533</span></a>
</span><span id="L-534"><a href="#L-534"><span class="linenos">534</span></a> <span class="k">return</span> <span class="n">d</span> </span><span id="L-534"><a href="#L-534"><span class="linenos">534</span></a> <span class="n">subd</span><span class="p">[</span><span class="n">keys</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">value</span>
</span><span id="L-535"><a href="#L-535"><span class="linenos">535</span></a> <span class="k">return</span> <span class="n">d</span>
</span></pre></div> </span></pre></div>
@ -1515,15 +1516,16 @@ For example, a generic mapping type might be defined as::</p>
</span><span id="MappingSchema-399"><a href="#MappingSchema-399"><span class="linenos">399</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="MappingSchema-399"><a href="#MappingSchema-399"><span class="linenos">399</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="MappingSchema-400"><a href="#MappingSchema-400"><span class="linenos">400</span></a> <span class="k">if</span> <span class="n">schema_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">:</span> </span><span id="MappingSchema-400"><a href="#MappingSchema-400"><span class="linenos">400</span></a> <span class="k">if</span> <span class="n">schema_type</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">:</span>
</span><span id="MappingSchema-401"><a href="#MappingSchema-401"><span class="linenos">401</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">dialect</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span> </span><span id="MappingSchema-401"><a href="#MappingSchema-401"><span class="linenos">401</span></a> <span class="n">dialect</span> <span class="o">=</span> <span class="n">dialect</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">dialect</span>
</span><span id="MappingSchema-402"><a href="#MappingSchema-402"><span class="linenos">402</span></a> </span><span id="MappingSchema-402"><a href="#MappingSchema-402"><span class="linenos">402</span></a> <span class="n">udt</span> <span class="o">=</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span><span class="o">.</span><span class="n">SUPPORTS_USER_DEFINED_TYPES</span>
</span><span id="MappingSchema-403"><a href="#MappingSchema-403"><span class="linenos">403</span></a> <span class="k">try</span><span class="p">:</span> </span><span id="MappingSchema-403"><a href="#MappingSchema-403"><span class="linenos">403</span></a>
</span><span id="MappingSchema-404"><a href="#MappingSchema-404"><span class="linenos">404</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">schema_type</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">)</span> </span><span id="MappingSchema-404"><a href="#MappingSchema-404"><span class="linenos">404</span></a> <span class="k">try</span><span class="p">:</span>
</span><span id="MappingSchema-405"><a href="#MappingSchema-405"><span class="linenos">405</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">[</span><span class="n">schema_type</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression</span> </span><span id="MappingSchema-405"><a href="#MappingSchema-405"><span class="linenos">405</span></a> <span class="n">expression</span> <span class="o">=</span> <span class="n">exp</span><span class="o">.</span><span class="n">DataType</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="n">schema_type</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">udt</span><span class="o">=</span><span class="n">udt</span><span class="p">)</span>
</span><span id="MappingSchema-406"><a href="#MappingSchema-406"><span class="linenos">406</span></a> <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span> </span><span id="MappingSchema-406"><a href="#MappingSchema-406"><span class="linenos">406</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">[</span><span class="n">schema_type</span><span class="p">]</span> <span class="o">=</span> <span class="n">expression</span>
</span><span id="MappingSchema-407"><a href="#MappingSchema-407"><span class="linenos">407</span></a> <span class="n">in_dialect</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; in dialect </span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">dialect</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span> </span><span id="MappingSchema-407"><a href="#MappingSchema-407"><span class="linenos">407</span></a> <span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
</span><span id="MappingSchema-408"><a href="#MappingSchema-408"><span class="linenos">408</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to build type &#39;</span><span class="si">{</span><span class="n">schema_type</span><span class="si">}</span><span class="s2">&#39;</span><span class="si">{</span><span class="n">in_dialect</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span> </span><span id="MappingSchema-408"><a href="#MappingSchema-408"><span class="linenos">408</span></a> <span class="n">in_dialect</span> <span class="o">=</span> <span class="sa">f</span><span class="s2">&quot; in dialect </span><span class="si">{</span><span class="n">dialect</span><span class="si">}</span><span class="s2">&quot;</span> <span class="k">if</span> <span class="n">dialect</span> <span class="k">else</span> <span class="s2">&quot;&quot;</span>
</span><span id="MappingSchema-409"><a href="#MappingSchema-409"><span class="linenos">409</span></a> </span><span id="MappingSchema-409"><a href="#MappingSchema-409"><span class="linenos">409</span></a> <span class="k">raise</span> <span class="n">SchemaError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Failed to build type &#39;</span><span class="si">{</span><span class="n">schema_type</span><span class="si">}</span><span class="s2">&#39;</span><span class="si">{</span><span class="n">in_dialect</span><span class="si">}</span><span class="s2">.&quot;</span><span class="p">)</span>
</span><span id="MappingSchema-410"><a href="#MappingSchema-410"><span class="linenos">410</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">[</span><span class="n">schema_type</span><span class="p">]</span> </span><span id="MappingSchema-410"><a href="#MappingSchema-410"><span class="linenos">410</span></a>
</span><span id="MappingSchema-411"><a href="#MappingSchema-411"><span class="linenos">411</span></a> <span class="k">return</span> <span class="bp">self</span><span class="o">.</span><span class="n">_type_mapping_cache</span><span class="p">[</span><span class="n">schema_type</span><span class="p">]</span>
</span></pre></div> </span></pre></div>
@ -1713,24 +1715,24 @@ are assumed to be visible. The nesting should mirror that of the schema:
</div> </div>
<a class="headerlink" href="#normalize_name"></a> <a class="headerlink" href="#normalize_name"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="normalize_name-413"><a href="#normalize_name-413"><span class="linenos">413</span></a><span class="k">def</span> <span class="nf">normalize_name</span><span class="p">(</span> <div class="pdoc-code codehilite"><pre><span></span><span id="normalize_name-414"><a href="#normalize_name-414"><span class="linenos">414</span></a><span class="k">def</span> <span class="nf">normalize_name</span><span class="p">(</span>
</span><span id="normalize_name-414"><a href="#normalize_name-414"><span class="linenos">414</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span> </span><span id="normalize_name-415"><a href="#normalize_name-415"><span class="linenos">415</span></a> <span class="n">name</span><span class="p">:</span> <span class="nb">str</span> <span class="o">|</span> <span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">,</span>
</span><span id="normalize_name-415"><a href="#normalize_name-415"><span class="linenos">415</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> </span><span id="normalize_name-416"><a href="#normalize_name-416"><span class="linenos">416</span></a> <span class="n">dialect</span><span class="p">:</span> <span class="n">DialectType</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span>
</span><span id="normalize_name-416"><a href="#normalize_name-416"><span class="linenos">416</span></a> <span class="n">is_table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span> </span><span id="normalize_name-417"><a href="#normalize_name-417"><span class="linenos">417</span></a> <span class="n">is_table</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">False</span><span class="p">,</span>
</span><span id="normalize_name-417"><a href="#normalize_name-417"><span class="linenos">417</span></a> <span class="n">normalize</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span> </span><span id="normalize_name-418"><a href="#normalize_name-418"><span class="linenos">418</span></a> <span class="n">normalize</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="nb">bool</span><span class="p">]</span> <span class="o">=</span> <span class="kc">True</span><span class="p">,</span>
</span><span id="normalize_name-418"><a href="#normalize_name-418"><span class="linenos">418</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span> </span><span id="normalize_name-419"><a href="#normalize_name-419"><span class="linenos">419</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="nb">str</span><span class="p">:</span>
</span><span id="normalize_name-419"><a href="#normalize_name-419"><span class="linenos">419</span></a> <span class="k">try</span><span class="p">:</span> </span><span id="normalize_name-420"><a href="#normalize_name-420"><span class="linenos">420</span></a> <span class="k">try</span><span class="p">:</span>
</span><span id="normalize_name-420"><a href="#normalize_name-420"><span class="linenos">420</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span> </span><span id="normalize_name-421"><a href="#normalize_name-421"><span class="linenos">421</span></a> <span class="n">identifier</span> <span class="o">=</span> <span class="n">sqlglot</span><span class="o">.</span><span class="n">maybe_parse</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">dialect</span><span class="o">=</span><span class="n">dialect</span><span class="p">,</span> <span class="n">into</span><span class="o">=</span><span class="n">exp</span><span class="o">.</span><span class="n">Identifier</span><span class="p">)</span>
</span><span id="normalize_name-421"><a href="#normalize_name-421"><span class="linenos">421</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span> </span><span id="normalize_name-422"><a href="#normalize_name-422"><span class="linenos">422</span></a> <span class="k">except</span> <span class="n">ParseError</span><span class="p">:</span>
</span><span id="normalize_name-422"><a href="#normalize_name-422"><span class="linenos">422</span></a> <span class="k">return</span> <span class="n">name</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="n">name</span><span class="o">.</span><span class="n">name</span> </span><span id="normalize_name-423"><a href="#normalize_name-423"><span class="linenos">423</span></a> <span class="k">return</span> <span class="n">name</span> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="nb">str</span><span class="p">)</span> <span class="k">else</span> <span class="n">name</span><span class="o">.</span><span class="n">name</span>
</span><span id="normalize_name-423"><a href="#normalize_name-423"><span class="linenos">423</span></a> </span><span id="normalize_name-424"><a href="#normalize_name-424"><span class="linenos">424</span></a>
</span><span id="normalize_name-424"><a href="#normalize_name-424"><span class="linenos">424</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">identifier</span><span class="o">.</span><span class="n">name</span> </span><span id="normalize_name-425"><a href="#normalize_name-425"><span class="linenos">425</span></a> <span class="n">name</span> <span class="o">=</span> <span class="n">identifier</span><span class="o">.</span><span class="n">name</span>
</span><span id="normalize_name-425"><a href="#normalize_name-425"><span class="linenos">425</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">normalize</span><span class="p">:</span> </span><span id="normalize_name-426"><a href="#normalize_name-426"><span class="linenos">426</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">normalize</span><span class="p">:</span>
</span><span id="normalize_name-426"><a href="#normalize_name-426"><span class="linenos">426</span></a> <span class="k">return</span> <span class="n">name</span> </span><span id="normalize_name-427"><a href="#normalize_name-427"><span class="linenos">427</span></a> <span class="k">return</span> <span class="n">name</span>
</span><span id="normalize_name-427"><a href="#normalize_name-427"><span class="linenos">427</span></a> </span><span id="normalize_name-428"><a href="#normalize_name-428"><span class="linenos">428</span></a>
</span><span id="normalize_name-428"><a href="#normalize_name-428"><span class="linenos">428</span></a> <span class="c1"># This can be useful for normalize_identifier</span> </span><span id="normalize_name-429"><a href="#normalize_name-429"><span class="linenos">429</span></a> <span class="c1"># This can be useful for normalize_identifier</span>
</span><span id="normalize_name-429"><a href="#normalize_name-429"><span class="linenos">429</span></a> <span class="n">identifier</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">&quot;is_table&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">is_table</span> </span><span id="normalize_name-430"><a href="#normalize_name-430"><span class="linenos">430</span></a> <span class="n">identifier</span><span class="o">.</span><span class="n">meta</span><span class="p">[</span><span class="s2">&quot;is_table&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="n">is_table</span>
</span><span id="normalize_name-430"><a href="#normalize_name-430"><span class="linenos">430</span></a> <span class="k">return</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span><span 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="normalize_name-431"><a href="#normalize_name-431"><span class="linenos">431</span></a> <span class="k">return</span> <span class="n">Dialect</span><span class="o">.</span><span class="n">get_or_raise</span><span class="p">(</span><span class="n">dialect</span><span class="p">)</span><span 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></pre></div> </span></pre></div>
@ -1748,11 +1750,11 @@ are assumed to be visible. The nesting should mirror that of the schema:
</div> </div>
<a class="headerlink" href="#ensure_schema"></a> <a class="headerlink" href="#ensure_schema"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ensure_schema-433"><a href="#ensure_schema-433"><span class="linenos">433</span></a><span class="k">def</span> <span class="nf">ensure_schema</span><span class="p">(</span><span class="n">schema</span><span class="p">:</span> <span class="n">Schema</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Schema</span><span class="p">:</span> <div class="pdoc-code codehilite"><pre><span></span><span id="ensure_schema-434"><a href="#ensure_schema-434"><span class="linenos">434</span></a><span class="k">def</span> <span class="nf">ensure_schema</span><span class="p">(</span><span class="n">schema</span><span class="p">:</span> <span class="n">Schema</span> <span class="o">|</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">],</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Schema</span><span class="p">:</span>
</span><span id="ensure_schema-434"><a href="#ensure_schema-434"><span class="linenos">434</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="n">Schema</span><span class="p">):</span> </span><span id="ensure_schema-435"><a href="#ensure_schema-435"><span class="linenos">435</span></a> <span class="k">if</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="n">Schema</span><span class="p">):</span>
</span><span id="ensure_schema-435"><a href="#ensure_schema-435"><span class="linenos">435</span></a> <span class="k">return</span> <span class="n">schema</span> </span><span id="ensure_schema-436"><a href="#ensure_schema-436"><span class="linenos">436</span></a> <span class="k">return</span> <span class="n">schema</span>
</span><span id="ensure_schema-436"><a href="#ensure_schema-436"><span class="linenos">436</span></a> </span><span id="ensure_schema-437"><a href="#ensure_schema-437"><span class="linenos">437</span></a>
</span><span id="ensure_schema-437"><a href="#ensure_schema-437"><span class="linenos">437</span></a> <span class="k">return</span> <span class="n">MappingSchema</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span> </span><span id="ensure_schema-438"><a href="#ensure_schema-438"><span class="linenos">438</span></a> <span class="k">return</span> <span class="n">MappingSchema</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
</span></pre></div> </span></pre></div>
@ -1770,24 +1772,24 @@ are assumed to be visible. The nesting should mirror that of the schema:
</div> </div>
<a class="headerlink" href="#ensure_column_mapping"></a> <a class="headerlink" href="#ensure_column_mapping"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="ensure_column_mapping-440"><a href="#ensure_column_mapping-440"><span class="linenos">440</span></a><span class="k">def</span> <span class="nf">ensure_column_mapping</span><span class="p">(</span><span class="n">mapping</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ColumnMapping</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span> <div class="pdoc-code codehilite"><pre><span></span><span id="ensure_column_mapping-441"><a href="#ensure_column_mapping-441"><span class="linenos">441</span></a><span class="k">def</span> <span class="nf">ensure_column_mapping</span><span class="p">(</span><span class="n">mapping</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">ColumnMapping</span><span class="p">])</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span>
</span><span id="ensure_column_mapping-441"><a href="#ensure_column_mapping-441"><span class="linenos">441</span></a> <span class="k">if</span> <span class="n">mapping</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> </span><span id="ensure_column_mapping-442"><a href="#ensure_column_mapping-442"><span class="linenos">442</span></a> <span class="k">if</span> <span class="n">mapping</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="ensure_column_mapping-442"><a href="#ensure_column_mapping-442"><span class="linenos">442</span></a> <span class="k">return</span> <span class="p">{}</span> </span><span id="ensure_column_mapping-443"><a href="#ensure_column_mapping-443"><span class="linenos">443</span></a> <span class="k">return</span> <span class="p">{}</span>
</span><span id="ensure_column_mapping-443"><a href="#ensure_column_mapping-443"><span class="linenos">443</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span> </span><span id="ensure_column_mapping-444"><a href="#ensure_column_mapping-444"><span class="linenos">444</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">dict</span><span class="p">):</span>
</span><span id="ensure_column_mapping-444"><a href="#ensure_column_mapping-444"><span class="linenos">444</span></a> <span class="k">return</span> <span class="n">mapping</span> </span><span id="ensure_column_mapping-445"><a href="#ensure_column_mapping-445"><span class="linenos">445</span></a> <span class="k">return</span> <span class="n">mapping</span>
</span><span id="ensure_column_mapping-445"><a href="#ensure_column_mapping-445"><span class="linenos">445</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span> </span><span id="ensure_column_mapping-446"><a href="#ensure_column_mapping-446"><span class="linenos">446</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">str</span><span class="p">):</span>
</span><span id="ensure_column_mapping-446"><a href="#ensure_column_mapping-446"><span class="linenos">446</span></a> <span class="n">col_name_type_strs</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mapping</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;,&quot;</span><span class="p">)]</span> </span><span id="ensure_column_mapping-447"><a href="#ensure_column_mapping-447"><span class="linenos">447</span></a> <span class="n">col_name_type_strs</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mapping</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;,&quot;</span><span class="p">)]</span>
</span><span id="ensure_column_mapping-447"><a href="#ensure_column_mapping-447"><span class="linenos">447</span></a> <span class="k">return</span> <span class="p">{</span> </span><span id="ensure_column_mapping-448"><a href="#ensure_column_mapping-448"><span class="linenos">448</span></a> <span class="k">return</span> <span class="p">{</span>
</span><span id="ensure_column_mapping-448"><a href="#ensure_column_mapping-448"><span class="linenos">448</span></a> <span class="n">name_type_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;:&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="n">name_type_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;:&quot;</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span> </span><span id="ensure_column_mapping-449"><a href="#ensure_column_mapping-449"><span class="linenos">449</span></a> <span class="n">name_type_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;:&quot;</span><span class="p">)[</span><span class="mi">0</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="n">name_type_str</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s2">&quot;:&quot;</span><span class="p">)[</span><span class="mi">1</span><span class="p">]</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
</span><span id="ensure_column_mapping-449"><a href="#ensure_column_mapping-449"><span class="linenos">449</span></a> <span class="k">for</span> <span class="n">name_type_str</span> <span class="ow">in</span> <span class="n">col_name_type_strs</span> </span><span id="ensure_column_mapping-450"><a href="#ensure_column_mapping-450"><span class="linenos">450</span></a> <span class="k">for</span> <span class="n">name_type_str</span> <span class="ow">in</span> <span class="n">col_name_type_strs</span>
</span><span id="ensure_column_mapping-450"><a href="#ensure_column_mapping-450"><span class="linenos">450</span></a> <span class="p">}</span> </span><span id="ensure_column_mapping-451"><a href="#ensure_column_mapping-451"><span class="linenos">451</span></a> <span class="p">}</span>
</span><span id="ensure_column_mapping-451"><a href="#ensure_column_mapping-451"><span class="linenos">451</span></a> <span class="c1"># Check if mapping looks like a DataFrame StructType</span> </span><span id="ensure_column_mapping-452"><a href="#ensure_column_mapping-452"><span class="linenos">452</span></a> <span class="c1"># Check if mapping looks like a DataFrame StructType</span>
</span><span id="ensure_column_mapping-452"><a href="#ensure_column_mapping-452"><span class="linenos">452</span></a> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="s2">&quot;simpleString&quot;</span><span class="p">):</span> </span><span id="ensure_column_mapping-453"><a href="#ensure_column_mapping-453"><span class="linenos">453</span></a> <span class="k">elif</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="s2">&quot;simpleString&quot;</span><span class="p">):</span>
</span><span id="ensure_column_mapping-453"><a href="#ensure_column_mapping-453"><span class="linenos">453</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">struct_field</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> <span class="n">struct_field</span><span class="o">.</span><span class="n">dataType</span><span class="o">.</span><span class="n">simpleString</span><span class="p">()</span> <span class="k">for</span> <span class="n">struct_field</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">}</span> </span><span id="ensure_column_mapping-454"><a href="#ensure_column_mapping-454"><span class="linenos">454</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">struct_field</span><span class="o">.</span><span class="n">name</span><span class="p">:</span> <span class="n">struct_field</span><span class="o">.</span><span class="n">dataType</span><span class="o">.</span><span class="n">simpleString</span><span class="p">()</span> <span class="k">for</span> <span class="n">struct_field</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">}</span>
</span><span id="ensure_column_mapping-454"><a href="#ensure_column_mapping-454"><span class="linenos">454</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span> </span><span id="ensure_column_mapping-455"><a href="#ensure_column_mapping-455"><span class="linenos">455</span></a> <span class="k">elif</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">mapping</span><span class="p">,</span> <span class="nb">list</span><span class="p">):</span>
</span><span id="ensure_column_mapping-455"><a href="#ensure_column_mapping-455"><span class="linenos">455</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">x</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">}</span> </span><span id="ensure_column_mapping-456"><a href="#ensure_column_mapping-456"><span class="linenos">456</span></a> <span class="k">return</span> <span class="p">{</span><span class="n">x</span><span class="o">.</span><span class="n">strip</span><span class="p">():</span> <span class="kc">None</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">mapping</span><span class="p">}</span>
</span><span id="ensure_column_mapping-456"><a href="#ensure_column_mapping-456"><span class="linenos">456</span></a> </span><span id="ensure_column_mapping-457"><a href="#ensure_column_mapping-457"><span class="linenos">457</span></a>
</span><span id="ensure_column_mapping-457"><a href="#ensure_column_mapping-457"><span class="linenos">457</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Invalid mapping provided: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">mapping</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> </span><span id="ensure_column_mapping-458"><a href="#ensure_column_mapping-458"><span class="linenos">458</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Invalid mapping provided: </span><span class="si">{</span><span class="nb">type</span><span class="p">(</span><span class="n">mapping</span><span class="p">)</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</span></pre></div> </span></pre></div>
@ -1805,19 +1807,19 @@ are assumed to be visible. The nesting should mirror that of the schema:
</div> </div>
<a class="headerlink" href="#flatten_schema"></a> <a class="headerlink" href="#flatten_schema"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="flatten_schema-460"><a href="#flatten_schema-460"><span class="linenos">460</span></a><span class="k">def</span> <span class="nf">flatten_schema</span><span class="p">(</span> <div class="pdoc-code codehilite"><pre><span></span><span id="flatten_schema-461"><a href="#flatten_schema-461"><span class="linenos">461</span></a><span class="k">def</span> <span class="nf">flatten_schema</span><span class="p">(</span>
</span><span id="flatten_schema-461"><a href="#flatten_schema-461"><span class="linenos">461</span></a> <span class="n">schema</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">depth</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">keys</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span> </span><span id="flatten_schema-462"><a href="#flatten_schema-462"><span class="linenos">462</span></a> <span class="n">schema</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">depth</span><span class="p">:</span> <span class="nb">int</span><span class="p">,</span> <span class="n">keys</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Optional</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]</span> <span class="o">=</span> <span class="kc">None</span>
</span><span id="flatten_schema-462"><a href="#flatten_schema-462"><span class="linenos">462</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span> </span><span id="flatten_schema-463"><a href="#flatten_schema-463"><span class="linenos">463</span></a><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="n">t</span><span class="o">.</span><span class="n">List</span><span class="p">[</span><span class="nb">str</span><span class="p">]]:</span>
</span><span id="flatten_schema-463"><a href="#flatten_schema-463"><span class="linenos">463</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="p">[]</span> </span><span id="flatten_schema-464"><a href="#flatten_schema-464"><span class="linenos">464</span></a> <span class="n">tables</span> <span class="o">=</span> <span class="p">[]</span>
</span><span id="flatten_schema-464"><a href="#flatten_schema-464"><span class="linenos">464</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="n">keys</span> <span class="ow">or</span> <span class="p">[]</span> </span><span id="flatten_schema-465"><a href="#flatten_schema-465"><span class="linenos">465</span></a> <span class="n">keys</span> <span class="o">=</span> <span class="n">keys</span> <span class="ow">or</span> <span class="p">[]</span>
</span><span id="flatten_schema-465"><a href="#flatten_schema-465"><span class="linenos">465</span></a> </span><span id="flatten_schema-466"><a href="#flatten_schema-466"><span class="linenos">466</span></a>
</span><span id="flatten_schema-466"><a href="#flatten_schema-466"><span class="linenos">466</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">schema</span><span class="o">.</span><span class="n">items</span><span class="p">():</span> </span><span id="flatten_schema-467"><a href="#flatten_schema-467"><span class="linenos">467</span></a> <span class="k">for</span> <span class="n">k</span><span class="p">,</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">schema</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
</span><span id="flatten_schema-467"><a href="#flatten_schema-467"><span class="linenos">467</span></a> <span class="k">if</span> <span class="n">depth</span> <span class="o">&gt;=</span> <span class="mi">2</span><span class="p">:</span> </span><span id="flatten_schema-468"><a href="#flatten_schema-468"><span class="linenos">468</span></a> <span class="k">if</span> <span class="n">depth</span> <span class="o">&gt;=</span> <span class="mi">2</span><span class="p">:</span>
</span><span id="flatten_schema-468"><a href="#flatten_schema-468"><span class="linenos">468</span></a> <span class="n">tables</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">flatten_schema</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">depth</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">keys</span> <span class="o">+</span> <span class="p">[</span><span class="n">k</span><span class="p">]))</span> </span><span id="flatten_schema-469"><a href="#flatten_schema-469"><span class="linenos">469</span></a> <span class="n">tables</span><span class="o">.</span><span class="n">extend</span><span class="p">(</span><span class="n">flatten_schema</span><span class="p">(</span><span class="n">v</span><span class="p">,</span> <span class="n">depth</span> <span class="o">-</span> <span class="mi">1</span><span class="p">,</span> <span class="n">keys</span> <span class="o">+</span> <span class="p">[</span><span class="n">k</span><span class="p">]))</span>
</span><span id="flatten_schema-469"><a href="#flatten_schema-469"><span class="linenos">469</span></a> <span class="k">elif</span> <span class="n">depth</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> </span><span id="flatten_schema-470"><a href="#flatten_schema-470"><span class="linenos">470</span></a> <span class="k">elif</span> <span class="n">depth</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="flatten_schema-470"><a href="#flatten_schema-470"><span class="linenos">470</span></a> <span class="n">tables</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">keys</span> <span class="o">+</span> <span class="p">[</span><span class="n">k</span><span class="p">])</span> </span><span id="flatten_schema-471"><a href="#flatten_schema-471"><span class="linenos">471</span></a> <span class="n">tables</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">keys</span> <span class="o">+</span> <span class="p">[</span><span class="n">k</span><span class="p">])</span>
</span><span id="flatten_schema-471"><a href="#flatten_schema-471"><span class="linenos">471</span></a> </span><span id="flatten_schema-472"><a href="#flatten_schema-472"><span class="linenos">472</span></a>
</span><span id="flatten_schema-472"><a href="#flatten_schema-472"><span class="linenos">472</span></a> <span class="k">return</span> <span class="n">tables</span> </span><span id="flatten_schema-473"><a href="#flatten_schema-473"><span class="linenos">473</span></a> <span class="k">return</span> <span class="n">tables</span>
</span></pre></div> </span></pre></div>
@ -1835,30 +1837,30 @@ are assumed to be visible. The nesting should mirror that of the schema:
</div> </div>
<a class="headerlink" href="#nested_get"></a> <a class="headerlink" href="#nested_get"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="nested_get-475"><a href="#nested_get-475"><span class="linenos">475</span></a><span class="k">def</span> <span class="nf">nested_get</span><span class="p">(</span> <div class="pdoc-code codehilite"><pre><span></span><span id="nested_get-476"><a href="#nested_get-476"><span class="linenos">476</span></a><span class="k">def</span> <span class="nf">nested_get</span><span class="p">(</span>
</span><span id="nested_get-476"><a href="#nested_get-476"><span class="linenos">476</span></a> <span class="n">d</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="o">*</span><span class="n">path</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">],</span> <span class="n">raise_on_missing</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span> </span><span id="nested_get-477"><a href="#nested_get-477"><span class="linenos">477</span></a> <span class="n">d</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="o">*</span><span class="n">path</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Tuple</span><span class="p">[</span><span class="nb">str</span><span class="p">,</span> <span class="nb">str</span><span class="p">],</span> <span class="n">raise_on_missing</span><span class="p">:</span> <span class="nb">bool</span> <span class="o">=</span> <span class="kc">True</span>
</span><span id="nested_get-477"><a href="#nested_get-477"><span class="linenos">477</span></a><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">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]:</span> </span><span id="nested_get-478"><a href="#nested_get-478"><span class="linenos">478</span></a><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">t</span><span class="o">.</span><span class="n">Any</span><span class="p">]:</span>
</span><span id="nested_get-478"><a href="#nested_get-478"><span class="linenos">478</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> </span><span id="nested_get-479"><a href="#nested_get-479"><span class="linenos">479</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="nested_get-479"><a href="#nested_get-479"><span class="linenos">479</span></a><span class="sd"> Get a value for a nested dictionary.</span> </span><span id="nested_get-480"><a href="#nested_get-480"><span class="linenos">480</span></a><span class="sd"> Get a value for a nested dictionary.</span>
</span><span id="nested_get-480"><a href="#nested_get-480"><span class="linenos">480</span></a> </span><span id="nested_get-481"><a href="#nested_get-481"><span class="linenos">481</span></a>
</span><span id="nested_get-481"><a href="#nested_get-481"><span class="linenos">481</span></a><span class="sd"> Args:</span> </span><span id="nested_get-482"><a href="#nested_get-482"><span class="linenos">482</span></a><span class="sd"> Args:</span>
</span><span id="nested_get-482"><a href="#nested_get-482"><span class="linenos">482</span></a><span class="sd"> d: the dictionary to search.</span> </span><span id="nested_get-483"><a href="#nested_get-483"><span class="linenos">483</span></a><span class="sd"> d: the dictionary to search.</span>
</span><span id="nested_get-483"><a href="#nested_get-483"><span class="linenos">483</span></a><span class="sd"> *path: tuples of (name, key), where:</span> </span><span id="nested_get-484"><a href="#nested_get-484"><span class="linenos">484</span></a><span class="sd"> *path: tuples of (name, key), where:</span>
</span><span id="nested_get-484"><a href="#nested_get-484"><span class="linenos">484</span></a><span class="sd"> `key` is the key in the dictionary to get.</span> </span><span id="nested_get-485"><a href="#nested_get-485"><span class="linenos">485</span></a><span class="sd"> `key` is the key in the dictionary to get.</span>
</span><span id="nested_get-485"><a href="#nested_get-485"><span class="linenos">485</span></a><span class="sd"> `name` is a string to use in the error if `key` isn&#39;t found.</span> </span><span id="nested_get-486"><a href="#nested_get-486"><span class="linenos">486</span></a><span class="sd"> `name` is a string to use in the error if `key` isn&#39;t found.</span>
</span><span id="nested_get-486"><a href="#nested_get-486"><span class="linenos">486</span></a> </span><span id="nested_get-487"><a href="#nested_get-487"><span class="linenos">487</span></a>
</span><span id="nested_get-487"><a href="#nested_get-487"><span class="linenos">487</span></a><span class="sd"> Returns:</span> </span><span id="nested_get-488"><a href="#nested_get-488"><span class="linenos">488</span></a><span class="sd"> Returns:</span>
</span><span id="nested_get-488"><a href="#nested_get-488"><span class="linenos">488</span></a><span class="sd"> The value or None if it doesn&#39;t exist.</span> </span><span id="nested_get-489"><a href="#nested_get-489"><span class="linenos">489</span></a><span class="sd"> The value or None if it doesn&#39;t exist.</span>
</span><span id="nested_get-489"><a href="#nested_get-489"><span class="linenos">489</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="nested_get-490"><a href="#nested_get-490"><span class="linenos">490</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="nested_get-490"><a href="#nested_get-490"><span class="linenos">490</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">path</span><span class="p">:</span> </span><span id="nested_get-491"><a href="#nested_get-491"><span class="linenos">491</span></a> <span class="k">for</span> <span class="n">name</span><span class="p">,</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">path</span><span class="p">:</span>
</span><span id="nested_get-491"><a href="#nested_get-491"><span class="linenos">491</span></a> <span class="n">d</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="c1"># type: ignore</span> </span><span id="nested_get-492"><a href="#nested_get-492"><span class="linenos">492</span></a> <span class="n">d</span> <span class="o">=</span> <span class="n">d</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">key</span><span class="p">)</span> <span class="c1"># type: ignore</span>
</span><span id="nested_get-492"><a href="#nested_get-492"><span class="linenos">492</span></a> <span class="k">if</span> <span class="n">d</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span> </span><span id="nested_get-493"><a href="#nested_get-493"><span class="linenos">493</span></a> <span class="k">if</span> <span class="n">d</span> <span class="ow">is</span> <span class="kc">None</span><span class="p">:</span>
</span><span id="nested_get-493"><a href="#nested_get-493"><span class="linenos">493</span></a> <span class="k">if</span> <span class="n">raise_on_missing</span><span class="p">:</span> </span><span id="nested_get-494"><a href="#nested_get-494"><span class="linenos">494</span></a> <span class="k">if</span> <span class="n">raise_on_missing</span><span class="p">:</span>
</span><span id="nested_get-494"><a href="#nested_get-494"><span class="linenos">494</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;table&quot;</span> <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">&quot;this&quot;</span> <span class="k">else</span> <span class="n">name</span> </span><span id="nested_get-495"><a href="#nested_get-495"><span class="linenos">495</span></a> <span class="n">name</span> <span class="o">=</span> <span class="s2">&quot;table&quot;</span> <span class="k">if</span> <span class="n">name</span> <span class="o">==</span> <span class="s2">&quot;this&quot;</span> <span class="k">else</span> <span class="n">name</span>
</span><span id="nested_get-495"><a href="#nested_get-495"><span class="linenos">495</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Unknown </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> </span><span id="nested_get-496"><a href="#nested_get-496"><span class="linenos">496</span></a> <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Unknown </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">key</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="nested_get-496"><a href="#nested_get-496"><span class="linenos">496</span></a> <span class="k">return</span> <span class="kc">None</span> </span><span id="nested_get-497"><a href="#nested_get-497"><span class="linenos">497</span></a> <span class="k">return</span> <span class="kc">None</span>
</span><span id="nested_get-497"><a href="#nested_get-497"><span class="linenos">497</span></a> </span><span id="nested_get-498"><a href="#nested_get-498"><span class="linenos">498</span></a>
</span><span id="nested_get-498"><a href="#nested_get-498"><span class="linenos">498</span></a> <span class="k">return</span> <span class="n">d</span> </span><span id="nested_get-499"><a href="#nested_get-499"><span class="linenos">499</span></a> <span class="k">return</span> <span class="n">d</span>
</span></pre></div> </span></pre></div>
@ -1893,41 +1895,41 @@ are assumed to be visible. The nesting should mirror that of the schema:
</div> </div>
<a class="headerlink" href="#nested_set"></a> <a class="headerlink" href="#nested_set"></a>
<div class="pdoc-code codehilite"><pre><span></span><span id="nested_set-501"><a href="#nested_set-501"><span class="linenos">501</span></a><span class="k">def</span> <span class="nf">nested_set</span><span class="p">(</span><span class="n">d</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">keys</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span> <div class="pdoc-code codehilite"><pre><span></span><span id="nested_set-502"><a href="#nested_set-502"><span class="linenos">502</span></a><span class="k">def</span> <span class="nf">nested_set</span><span class="p">(</span><span class="n">d</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">,</span> <span class="n">keys</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Sequence</span><span class="p">[</span><span class="nb">str</span><span class="p">],</span> <span class="n">value</span><span class="p">:</span> <span class="n">t</span><span class="o">.</span><span class="n">Any</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">t</span><span class="o">.</span><span class="n">Dict</span><span class="p">:</span>
</span><span id="nested_set-502"><a href="#nested_set-502"><span class="linenos">502</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span> </span><span id="nested_set-503"><a href="#nested_set-503"><span class="linenos">503</span></a><span class="w"> </span><span class="sd">&quot;&quot;&quot;</span>
</span><span id="nested_set-503"><a href="#nested_set-503"><span class="linenos">503</span></a><span class="sd"> In-place set a value for a nested dictionary</span> </span><span id="nested_set-504"><a href="#nested_set-504"><span class="linenos">504</span></a><span class="sd"> In-place set a value for a nested dictionary</span>
</span><span id="nested_set-504"><a href="#nested_set-504"><span class="linenos">504</span></a> </span><span id="nested_set-505"><a href="#nested_set-505"><span class="linenos">505</span></a>
</span><span id="nested_set-505"><a href="#nested_set-505"><span class="linenos">505</span></a><span class="sd"> Example:</span> </span><span id="nested_set-506"><a href="#nested_set-506"><span class="linenos">506</span></a><span class="sd"> Example:</span>
</span><span id="nested_set-506"><a href="#nested_set-506"><span class="linenos">506</span></a><span class="sd"> &gt;&gt;&gt; nested_set({}, [&quot;top_key&quot;, &quot;second_key&quot;], &quot;value&quot;)</span> </span><span id="nested_set-507"><a href="#nested_set-507"><span class="linenos">507</span></a><span class="sd"> &gt;&gt;&gt; nested_set({}, [&quot;top_key&quot;, &quot;second_key&quot;], &quot;value&quot;)</span>
</span><span id="nested_set-507"><a href="#nested_set-507"><span class="linenos">507</span></a><span class="sd"> {&#39;top_key&#39;: {&#39;second_key&#39;: &#39;value&#39;}}</span> </span><span id="nested_set-508"><a href="#nested_set-508"><span class="linenos">508</span></a><span class="sd"> {&#39;top_key&#39;: {&#39;second_key&#39;: &#39;value&#39;}}</span>
</span><span id="nested_set-508"><a href="#nested_set-508"><span class="linenos">508</span></a> </span><span id="nested_set-509"><a href="#nested_set-509"><span class="linenos">509</span></a>
</span><span id="nested_set-509"><a href="#nested_set-509"><span class="linenos">509</span></a><span class="sd"> &gt;&gt;&gt; nested_set({&quot;top_key&quot;: {&quot;third_key&quot;: &quot;third_value&quot;}}, [&quot;top_key&quot;, &quot;second_key&quot;], &quot;value&quot;)</span> </span><span id="nested_set-510"><a href="#nested_set-510"><span class="linenos">510</span></a><span class="sd"> &gt;&gt;&gt; nested_set({&quot;top_key&quot;: {&quot;third_key&quot;: &quot;third_value&quot;}}, [&quot;top_key&quot;, &quot;second_key&quot;], &quot;value&quot;)</span>
</span><span id="nested_set-510"><a href="#nested_set-510"><span class="linenos">510</span></a><span class="sd"> {&#39;top_key&#39;: {&#39;third_key&#39;: &#39;third_value&#39;, &#39;second_key&#39;: &#39;value&#39;}}</span> </span><span id="nested_set-511"><a href="#nested_set-511"><span class="linenos">511</span></a><span class="sd"> {&#39;top_key&#39;: {&#39;third_key&#39;: &#39;third_value&#39;, &#39;second_key&#39;: &#39;value&#39;}}</span>
</span><span id="nested_set-511"><a href="#nested_set-511"><span class="linenos">511</span></a> </span><span id="nested_set-512"><a href="#nested_set-512"><span class="linenos">512</span></a>
</span><span id="nested_set-512"><a href="#nested_set-512"><span class="linenos">512</span></a><span class="sd"> Args:</span> </span><span id="nested_set-513"><a href="#nested_set-513"><span class="linenos">513</span></a><span class="sd"> Args:</span>
</span><span id="nested_set-513"><a href="#nested_set-513"><span class="linenos">513</span></a><span class="sd"> d: dictionary to update.</span> </span><span id="nested_set-514"><a href="#nested_set-514"><span class="linenos">514</span></a><span class="sd"> d: dictionary to update.</span>
</span><span id="nested_set-514"><a href="#nested_set-514"><span class="linenos">514</span></a><span class="sd"> keys: the keys that makeup the path to `value`.</span> </span><span id="nested_set-515"><a href="#nested_set-515"><span class="linenos">515</span></a><span class="sd"> keys: the keys that makeup the path to `value`.</span>
</span><span id="nested_set-515"><a href="#nested_set-515"><span class="linenos">515</span></a><span class="sd"> value: the value to set in the dictionary for the given key path.</span> </span><span id="nested_set-516"><a href="#nested_set-516"><span class="linenos">516</span></a><span class="sd"> value: the value to set in the dictionary for the given key path.</span>
</span><span id="nested_set-516"><a href="#nested_set-516"><span class="linenos">516</span></a> </span><span id="nested_set-517"><a href="#nested_set-517"><span class="linenos">517</span></a>
</span><span id="nested_set-517"><a href="#nested_set-517"><span class="linenos">517</span></a><span class="sd"> Returns:</span> </span><span id="nested_set-518"><a href="#nested_set-518"><span class="linenos">518</span></a><span class="sd"> Returns:</span>
</span><span id="nested_set-518"><a href="#nested_set-518"><span class="linenos">518</span></a><span class="sd"> The (possibly) updated dictionary.</span> </span><span id="nested_set-519"><a href="#nested_set-519"><span class="linenos">519</span></a><span class="sd"> The (possibly) updated dictionary.</span>
</span><span id="nested_set-519"><a href="#nested_set-519"><span class="linenos">519</span></a><span class="sd"> &quot;&quot;&quot;</span> </span><span id="nested_set-520"><a href="#nested_set-520"><span class="linenos">520</span></a><span class="sd"> &quot;&quot;&quot;</span>
</span><span id="nested_set-520"><a href="#nested_set-520"><span class="linenos">520</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">keys</span><span class="p">:</span> </span><span id="nested_set-521"><a href="#nested_set-521"><span class="linenos">521</span></a> <span class="k">if</span> <span class="ow">not</span> <span class="n">keys</span><span class="p">:</span>
</span><span id="nested_set-521"><a href="#nested_set-521"><span class="linenos">521</span></a> <span class="k">return</span> <span class="n">d</span> </span><span id="nested_set-522"><a href="#nested_set-522"><span class="linenos">522</span></a> <span class="k">return</span> <span class="n">d</span>
</span><span id="nested_set-522"><a href="#nested_set-522"><span class="linenos">522</span></a> </span><span id="nested_set-523"><a href="#nested_set-523"><span class="linenos">523</span></a>
</span><span id="nested_set-523"><a href="#nested_set-523"><span class="linenos">523</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">keys</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span> </span><span id="nested_set-524"><a href="#nested_set-524"><span class="linenos">524</span></a> <span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">keys</span><span class="p">)</span> <span class="o">==</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="nested_set-524"><a href="#nested_set-524"><span class="linenos">524</span></a> <span class="n">d</span><span class="p">[</span><span class="n">keys</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> <span class="o">=</span> <span class="n">value</span> </span><span id="nested_set-525"><a href="#nested_set-525"><span class="linenos">525</span></a> <span class="n">d</span><span class="p">[</span><span class="n">keys</span><span class="p">[</span><span class="mi">0</span><span class="p">]]</span> <span class="o">=</span> <span class="n">value</span>
</span><span id="nested_set-525"><a href="#nested_set-525"><span class="linenos">525</span></a> <span class="k">return</span> <span class="n">d</span> </span><span id="nested_set-526"><a href="#nested_set-526"><span class="linenos">526</span></a> <span class="k">return</span> <span class="n">d</span>
</span><span id="nested_set-526"><a href="#nested_set-526"><span class="linenos">526</span></a> </span><span id="nested_set-527"><a href="#nested_set-527"><span class="linenos">527</span></a>
</span><span id="nested_set-527"><a href="#nested_set-527"><span class="linenos">527</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">d</span> </span><span id="nested_set-528"><a href="#nested_set-528"><span class="linenos">528</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">d</span>
</span><span id="nested_set-528"><a href="#nested_set-528"><span class="linenos">528</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">keys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]:</span> </span><span id="nested_set-529"><a href="#nested_set-529"><span class="linenos">529</span></a> <span class="k">for</span> <span class="n">key</span> <span class="ow">in</span> <span class="n">keys</span><span class="p">[:</span><span class="o">-</span><span class="mi">1</span><span class="p">]:</span>
</span><span id="nested_set-529"><a href="#nested_set-529"><span class="linenos">529</span></a> <span class="k">if</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">subd</span><span class="p">:</span> </span><span id="nested_set-530"><a href="#nested_set-530"><span class="linenos">530</span></a> <span class="k">if</span> <span class="n">key</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">subd</span><span class="p">:</span>
</span><span id="nested_set-530"><a href="#nested_set-530"><span class="linenos">530</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">subd</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="p">{})</span> </span><span id="nested_set-531"><a href="#nested_set-531"><span class="linenos">531</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">subd</span><span class="o">.</span><span class="n">setdefault</span><span class="p">(</span><span class="n">key</span><span class="p">,</span> <span class="p">{})</span>
</span><span id="nested_set-531"><a href="#nested_set-531"><span class="linenos">531</span></a> <span class="k">else</span><span class="p">:</span> </span><span id="nested_set-532"><a href="#nested_set-532"><span class="linenos">532</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="nested_set-532"><a href="#nested_set-532"><span class="linenos">532</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">subd</span><span class="p">[</span><span class="n">key</span><span class="p">]</span> </span><span id="nested_set-533"><a href="#nested_set-533"><span class="linenos">533</span></a> <span class="n">subd</span> <span class="o">=</span> <span class="n">subd</span><span class="p">[</span><span class="n">key</span><span class="p">]</span>
</span><span id="nested_set-533"><a href="#nested_set-533"><span class="linenos">533</span></a> </span><span id="nested_set-534"><a href="#nested_set-534"><span class="linenos">534</span></a>
</span><span id="nested_set-534"><a href="#nested_set-534"><span class="linenos">534</span></a> <span class="n">subd</span><span class="p">[</span><span class="n">keys</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">value</span> </span><span id="nested_set-535"><a href="#nested_set-535"><span class="linenos">535</span></a> <span class="n">subd</span><span class="p">[</span><span class="n">keys</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">]]</span> <span class="o">=</span> <span class="n">value</span>
</span><span id="nested_set-535"><a href="#nested_set-535"><span class="linenos">535</span></a> <span class="k">return</span> <span class="n">d</span> </span><span id="nested_set-536"><a href="#nested_set-536"><span class="linenos">536</span></a> <span class="k">return</span> <span class="n">d</span>
</span></pre></div> </span></pre></div>

View file

@ -2294,30 +2294,34 @@
</span><span id="L-1168"><a href="#L-1168"><span class="linenos">1168</span></a> <span class="n">escapes</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_STRING_ESCAPES</span> <span class="k">if</span> <span class="n">escapes</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">escapes</span> </span><span id="L-1168"><a href="#L-1168"><span class="linenos">1168</span></a> <span class="n">escapes</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_STRING_ESCAPES</span> <span class="k">if</span> <span class="n">escapes</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">escapes</span>
</span><span id="L-1169"><a href="#L-1169"><span class="linenos">1169</span></a> </span><span id="L-1169"><a href="#L-1169"><span class="linenos">1169</span></a>
</span><span id="L-1170"><a href="#L-1170"><span class="linenos">1170</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> </span><span id="L-1170"><a href="#L-1170"><span class="linenos">1170</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="L-1171"><a href="#L-1171"><span class="linenos">1171</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="n">escapes</span> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">delimiter</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">in</span> <span class="n">escapes</span><span class="p">):</span> </span><span id="L-1171"><a href="#L-1171"><span class="linenos">1171</span></a> <span class="k">if</span> <span class="p">(</span>
</span><span id="L-1172"><a href="#L-1172"><span class="linenos">1172</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">delimiter</span><span class="p">:</span> </span><span id="L-1172"><a href="#L-1172"><span class="linenos">1172</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="n">escapes</span>
</span><span id="L-1173"><a href="#L-1173"><span class="linenos">1173</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> </span><span id="L-1173"><a href="#L-1173"><span class="linenos">1173</span></a> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">delimiter</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">in</span> <span class="n">escapes</span><span class="p">)</span>
</span><span id="L-1174"><a href="#L-1174"><span class="linenos">1174</span></a> <span class="k">else</span><span class="p">:</span> </span><span id="L-1174"><a href="#L-1174"><span class="linenos">1174</span></a> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_QUOTES</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="p">)</span>
</span><span id="L-1175"><a href="#L-1175"><span class="linenos">1175</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> </span><span id="L-1175"><a href="#L-1175"><span class="linenos">1175</span></a> <span class="p">):</span>
</span><span id="L-1176"><a href="#L-1176"><span class="linenos">1176</span></a> </span><span id="L-1176"><a href="#L-1176"><span class="linenos">1176</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">delimiter</span><span class="p">:</span>
</span><span id="L-1177"><a href="#L-1177"><span class="linenos">1177</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> </span><span id="L-1177"><a href="#L-1177"><span class="linenos">1177</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span>
</span><span id="L-1178"><a href="#L-1178"><span class="linenos">1178</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> </span><span id="L-1178"><a href="#L-1178"><span class="linenos">1178</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1179"><a href="#L-1179"><span class="linenos">1179</span></a> <span class="k">else</span><span class="p">:</span> </span><span id="L-1179"><a href="#L-1179"><span class="linenos">1179</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span>
</span><span id="L-1180"><a href="#L-1180"><span class="linenos">1180</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Missing </span><span class="si">{</span><span class="n">delimiter</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_current</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> </span><span id="L-1180"><a href="#L-1180"><span class="linenos">1180</span></a>
</span><span id="L-1181"><a href="#L-1181"><span class="linenos">1181</span></a> <span class="k">else</span><span class="p">:</span> </span><span id="L-1181"><a href="#L-1181"><span class="linenos">1181</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span>
</span><span id="L-1182"><a href="#L-1182"><span class="linenos">1182</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_chars</span><span class="p">(</span><span class="n">delim_size</span><span class="p">)</span> <span class="o">==</span> <span class="n">delimiter</span><span class="p">:</span> </span><span id="L-1182"><a href="#L-1182"><span class="linenos">1182</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
</span><span id="L-1183"><a href="#L-1183"><span class="linenos">1183</span></a> <span class="k">if</span> <span class="n">delim_size</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span> </span><span id="L-1183"><a href="#L-1183"><span class="linenos">1183</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1184"><a href="#L-1184"><span class="linenos">1184</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">delim_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> </span><span id="L-1184"><a href="#L-1184"><span class="linenos">1184</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Missing </span><span class="si">{</span><span class="n">delimiter</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_current</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="L-1185"><a href="#L-1185"><span class="linenos">1185</span></a> <span class="k">break</span> </span><span id="L-1185"><a href="#L-1185"><span class="linenos">1185</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="L-1186"><a href="#L-1186"><span class="linenos">1186</span></a> </span><span id="L-1186"><a href="#L-1186"><span class="linenos">1186</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_chars</span><span class="p">(</span><span class="n">delim_size</span><span class="p">)</span> <span class="o">==</span> <span class="n">delimiter</span><span class="p">:</span>
</span><span id="L-1187"><a href="#L-1187"><span class="linenos">1187</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span> </span><span id="L-1187"><a href="#L-1187"><span class="linenos">1187</span></a> <span class="k">if</span> <span class="n">delim_size</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="L-1188"><a href="#L-1188"><span class="linenos">1188</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Missing </span><span class="si">{</span><span class="n">delimiter</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_start</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> </span><span id="L-1188"><a href="#L-1188"><span class="linenos">1188</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">delim_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="L-1189"><a href="#L-1189"><span class="linenos">1189</span></a> </span><span id="L-1189"><a href="#L-1189"><span class="linenos">1189</span></a> <span class="k">break</span>
</span><span id="L-1190"><a href="#L-1190"><span class="linenos">1190</span></a> <span class="n">current</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span> </span><span id="L-1190"><a href="#L-1190"><span class="linenos">1190</span></a>
</span><span id="L-1191"><a href="#L-1191"><span class="linenos">1191</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">alnum</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span><span id="L-1191"><a href="#L-1191"><span class="linenos">1191</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span>
</span><span id="L-1192"><a href="#L-1192"><span class="linenos">1192</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="n">current</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> </span><span id="L-1192"><a href="#L-1192"><span class="linenos">1192</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Missing </span><span class="si">{</span><span class="n">delimiter</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_start</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="L-1193"><a href="#L-1193"><span class="linenos">1193</span></a> </span><span id="L-1193"><a href="#L-1193"><span class="linenos">1193</span></a>
</span><span id="L-1194"><a href="#L-1194"><span class="linenos">1194</span></a> <span class="k">return</span> <span class="n">text</span> </span><span id="L-1194"><a href="#L-1194"><span class="linenos">1194</span></a> <span class="n">current</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span>
</span><span id="L-1195"><a href="#L-1195"><span class="linenos">1195</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">alnum</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="L-1196"><a href="#L-1196"><span class="linenos">1196</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="n">current</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span>
</span><span id="L-1197"><a href="#L-1197"><span class="linenos">1197</span></a>
</span><span id="L-1198"><a href="#L-1198"><span class="linenos">1198</span></a> <span class="k">return</span> <span class="n">text</span>
</span></pre></div> </span></pre></div>
@ -7493,30 +7497,34 @@
</span><span id="Tokenizer-1169"><a href="#Tokenizer-1169"><span class="linenos">1169</span></a> <span class="n">escapes</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_STRING_ESCAPES</span> <span class="k">if</span> <span class="n">escapes</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">escapes</span> </span><span id="Tokenizer-1169"><a href="#Tokenizer-1169"><span class="linenos">1169</span></a> <span class="n">escapes</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_STRING_ESCAPES</span> <span class="k">if</span> <span class="n">escapes</span> <span class="ow">is</span> <span class="kc">None</span> <span class="k">else</span> <span class="n">escapes</span>
</span><span id="Tokenizer-1170"><a href="#Tokenizer-1170"><span class="linenos">1170</span></a> </span><span id="Tokenizer-1170"><a href="#Tokenizer-1170"><span class="linenos">1170</span></a>
</span><span id="Tokenizer-1171"><a href="#Tokenizer-1171"><span class="linenos">1171</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span> </span><span id="Tokenizer-1171"><a href="#Tokenizer-1171"><span class="linenos">1171</span></a> <span class="k">while</span> <span class="kc">True</span><span class="p">:</span>
</span><span id="Tokenizer-1172"><a href="#Tokenizer-1172"><span class="linenos">1172</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="n">escapes</span> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">delimiter</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">in</span> <span class="n">escapes</span><span class="p">):</span> </span><span id="Tokenizer-1172"><a href="#Tokenizer-1172"><span class="linenos">1172</span></a> <span class="k">if</span> <span class="p">(</span>
</span><span id="Tokenizer-1173"><a href="#Tokenizer-1173"><span class="linenos">1173</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">delimiter</span><span class="p">:</span> </span><span id="Tokenizer-1173"><a href="#Tokenizer-1173"><span class="linenos">1173</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">in</span> <span class="n">escapes</span>
</span><span id="Tokenizer-1174"><a href="#Tokenizer-1174"><span class="linenos">1174</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> </span><span id="Tokenizer-1174"><a href="#Tokenizer-1174"><span class="linenos">1174</span></a> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">delimiter</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="ow">in</span> <span class="n">escapes</span><span class="p">)</span>
</span><span id="Tokenizer-1175"><a href="#Tokenizer-1175"><span class="linenos">1175</span></a> <span class="k">else</span><span class="p">:</span> </span><span id="Tokenizer-1175"><a href="#Tokenizer-1175"><span class="linenos">1175</span></a> <span class="ow">and</span> <span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="ow">not</span> <span class="ow">in</span> <span class="bp">self</span><span class="o">.</span><span class="n">_QUOTES</span> <span class="ow">or</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">==</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span><span class="p">)</span>
</span><span id="Tokenizer-1176"><a href="#Tokenizer-1176"><span class="linenos">1176</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> </span><span id="Tokenizer-1176"><a href="#Tokenizer-1176"><span class="linenos">1176</span></a> <span class="p">):</span>
</span><span id="Tokenizer-1177"><a href="#Tokenizer-1177"><span class="linenos">1177</span></a> </span><span id="Tokenizer-1177"><a href="#Tokenizer-1177"><span class="linenos">1177</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span> <span class="o">==</span> <span class="n">delimiter</span><span class="p">:</span>
</span><span id="Tokenizer-1178"><a href="#Tokenizer-1178"><span class="linenos">1178</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span> </span><span id="Tokenizer-1178"><a href="#Tokenizer-1178"><span class="linenos">1178</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span>
</span><span id="Tokenizer-1179"><a href="#Tokenizer-1179"><span class="linenos">1179</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> </span><span id="Tokenizer-1179"><a href="#Tokenizer-1179"><span class="linenos">1179</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Tokenizer-1180"><a href="#Tokenizer-1180"><span class="linenos">1180</span></a> <span class="k">else</span><span class="p">:</span> </span><span id="Tokenizer-1180"><a href="#Tokenizer-1180"><span class="linenos">1180</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_char</span> <span class="o">+</span> <span class="bp">self</span><span class="o">.</span><span class="n">_peek</span>
</span><span id="Tokenizer-1181"><a href="#Tokenizer-1181"><span class="linenos">1181</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Missing </span><span class="si">{</span><span class="n">delimiter</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_current</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> </span><span id="Tokenizer-1181"><a href="#Tokenizer-1181"><span class="linenos">1181</span></a>
</span><span id="Tokenizer-1182"><a href="#Tokenizer-1182"><span class="linenos">1182</span></a> <span class="k">else</span><span class="p">:</span> </span><span id="Tokenizer-1182"><a href="#Tokenizer-1182"><span class="linenos">1182</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">+</span> <span class="mi">1</span> <span class="o">&lt;</span> <span class="bp">self</span><span class="o">.</span><span class="n">size</span><span class="p">:</span>
</span><span id="Tokenizer-1183"><a href="#Tokenizer-1183"><span class="linenos">1183</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_chars</span><span class="p">(</span><span class="n">delim_size</span><span class="p">)</span> <span class="o">==</span> <span class="n">delimiter</span><span class="p">:</span> </span><span id="Tokenizer-1183"><a href="#Tokenizer-1183"><span class="linenos">1183</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span>
</span><span id="Tokenizer-1184"><a href="#Tokenizer-1184"><span class="linenos">1184</span></a> <span class="k">if</span> <span class="n">delim_size</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span> </span><span id="Tokenizer-1184"><a href="#Tokenizer-1184"><span class="linenos">1184</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Tokenizer-1185"><a href="#Tokenizer-1185"><span class="linenos">1185</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">delim_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span> </span><span id="Tokenizer-1185"><a href="#Tokenizer-1185"><span class="linenos">1185</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Missing </span><span class="si">{</span><span class="n">delimiter</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_current</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="Tokenizer-1186"><a href="#Tokenizer-1186"><span class="linenos">1186</span></a> <span class="k">break</span> </span><span id="Tokenizer-1186"><a href="#Tokenizer-1186"><span class="linenos">1186</span></a> <span class="k">else</span><span class="p">:</span>
</span><span id="Tokenizer-1187"><a href="#Tokenizer-1187"><span class="linenos">1187</span></a> </span><span id="Tokenizer-1187"><a href="#Tokenizer-1187"><span class="linenos">1187</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_chars</span><span class="p">(</span><span class="n">delim_size</span><span class="p">)</span> <span class="o">==</span> <span class="n">delimiter</span><span class="p">:</span>
</span><span id="Tokenizer-1188"><a href="#Tokenizer-1188"><span class="linenos">1188</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span> </span><span id="Tokenizer-1188"><a href="#Tokenizer-1188"><span class="linenos">1188</span></a> <span class="k">if</span> <span class="n">delim_size</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">:</span>
</span><span id="Tokenizer-1189"><a href="#Tokenizer-1189"><span class="linenos">1189</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Missing </span><span class="si">{</span><span class="n">delimiter</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_start</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span> </span><span id="Tokenizer-1189"><a href="#Tokenizer-1189"><span class="linenos">1189</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">delim_size</span> <span class="o">-</span> <span class="mi">1</span><span class="p">)</span>
</span><span id="Tokenizer-1190"><a href="#Tokenizer-1190"><span class="linenos">1190</span></a> </span><span id="Tokenizer-1190"><a href="#Tokenizer-1190"><span class="linenos">1190</span></a> <span class="k">break</span>
</span><span id="Tokenizer-1191"><a href="#Tokenizer-1191"><span class="linenos">1191</span></a> <span class="n">current</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span> </span><span id="Tokenizer-1191"><a href="#Tokenizer-1191"><span class="linenos">1191</span></a>
</span><span id="Tokenizer-1192"><a href="#Tokenizer-1192"><span class="linenos">1192</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">alnum</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span> </span><span id="Tokenizer-1192"><a href="#Tokenizer-1192"><span class="linenos">1192</span></a> <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">_end</span><span class="p">:</span>
</span><span id="Tokenizer-1193"><a href="#Tokenizer-1193"><span class="linenos">1193</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="n">current</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span> </span><span id="Tokenizer-1193"><a href="#Tokenizer-1193"><span class="linenos">1193</span></a> <span class="k">raise</span> <span class="n">TokenError</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;Missing </span><span class="si">{</span><span class="n">delimiter</span><span class="si">}</span><span class="s2"> from </span><span class="si">{</span><span class="bp">self</span><span class="o">.</span><span class="n">_line</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">_start</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
</span><span id="Tokenizer-1194"><a href="#Tokenizer-1194"><span class="linenos">1194</span></a> </span><span id="Tokenizer-1194"><a href="#Tokenizer-1194"><span class="linenos">1194</span></a>
</span><span id="Tokenizer-1195"><a href="#Tokenizer-1195"><span class="linenos">1195</span></a> <span class="k">return</span> <span class="n">text</span> </span><span id="Tokenizer-1195"><a href="#Tokenizer-1195"><span class="linenos">1195</span></a> <span class="n">current</span> <span class="o">=</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span>
</span><span id="Tokenizer-1196"><a href="#Tokenizer-1196"><span class="linenos">1196</span></a> <span class="bp">self</span><span class="o">.</span><span class="n">_advance</span><span class="p">(</span><span class="n">alnum</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
</span><span id="Tokenizer-1197"><a href="#Tokenizer-1197"><span class="linenos">1197</span></a> <span class="n">text</span> <span class="o">+=</span> <span class="bp">self</span><span class="o">.</span><span class="n">sql</span><span class="p">[</span><span class="n">current</span> <span class="p">:</span> <span class="bp">self</span><span class="o">.</span><span class="n">_current</span> <span class="o">-</span> <span class="mi">1</span><span class="p">]</span>
</span><span id="Tokenizer-1198"><a href="#Tokenizer-1198"><span class="linenos">1198</span></a>
</span><span id="Tokenizer-1199"><a href="#Tokenizer-1199"><span class="linenos">1199</span></a> <span class="k">return</span> <span class="n">text</span>
</span></pre></div> </span></pre></div>
@ -7685,7 +7693,7 @@
<div class="attr variable"> <div class="attr variable">
<span class="name">COMMANDS</span> = <span class="name">COMMANDS</span> =
<input id="Tokenizer.COMMANDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1"> <input id="Tokenizer.COMMANDS-view-value" class="view-value-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
<label class="view-value-button pdoc-button" for="Tokenizer.COMMANDS-view-value"></label><span class="default_value">{&lt;<a href="#TokenType.FETCH">TokenType.FETCH</a>: &#39;FETCH&#39;&gt;, &lt;<a href="#TokenType.SHOW">TokenType.SHOW</a>: &#39;SHOW&#39;&gt;, &lt;<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: &#39;COMMAND&#39;&gt;, &lt;<a href="#TokenType.EXECUTE">TokenType.EXECUTE</a>: &#39;EXECUTE&#39;&gt;}</span> <label class="view-value-button pdoc-button" for="Tokenizer.COMMANDS-view-value"></label><span class="default_value">{&lt;<a href="#TokenType.COMMAND">TokenType.COMMAND</a>: &#39;COMMAND&#39;&gt;, &lt;<a href="#TokenType.FETCH">TokenType.FETCH</a>: &#39;FETCH&#39;&gt;, &lt;<a href="#TokenType.EXECUTE">TokenType.EXECUTE</a>: &#39;EXECUTE&#39;&gt;, &lt;<a href="#TokenType.SHOW">TokenType.SHOW</a>: &#39;SHOW&#39;&gt;}</span>
</div> </div>

View file

@ -9,6 +9,7 @@ from sqlglot._typing import E
from sqlglot.dialects.dialect import ( from sqlglot.dialects.dialect import (
Dialect, Dialect,
binary_from_function, binary_from_function,
date_add_interval_sql,
datestrtodate_sql, datestrtodate_sql,
format_time_lambda, format_time_lambda,
inline_array_sql, inline_array_sql,
@ -28,19 +29,6 @@ from sqlglot.tokens import TokenType
logger = logging.getLogger("sqlglot") logger = logging.getLogger("sqlglot")
def _date_add_sql(
data_type: str, kind: str
) -> t.Callable[[BigQuery.Generator, exp.Expression], str]:
def func(self: BigQuery.Generator, expression: exp.Expression) -> str:
this = self.sql(expression, "this")
unit = expression.args.get("unit")
unit = exp.var(unit.name.upper() if unit else "DAY")
interval = exp.Interval(this=expression.expression.copy(), unit=unit)
return f"{data_type}_{kind}({this}, {self.sql(interval)})"
return func
def _derived_table_values_to_unnest(self: BigQuery.Generator, expression: exp.Values) -> str: def _derived_table_values_to_unnest(self: BigQuery.Generator, expression: exp.Values) -> str:
if not expression.find_ancestor(exp.From, exp.Join): if not expression.find_ancestor(exp.From, exp.Join):
return self.values_sql(expression) return self.values_sql(expression)
@ -187,6 +175,7 @@ def _parse_to_hex(args: t.List) -> exp.Hex | exp.MD5:
class BigQuery(Dialect): class BigQuery(Dialect):
UNNEST_COLUMN_ONLY = True UNNEST_COLUMN_ONLY = True
SUPPORTS_USER_DEFINED_TYPES = False
# https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical#case_sensitivity # https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical#case_sensitivity
RESOLVES_IDENTIFIERS_AS_UPPERCASE = None RESOLVES_IDENTIFIERS_AS_UPPERCASE = None
@ -278,8 +267,6 @@ class BigQuery(Dialect):
LOG_BASE_FIRST = False LOG_BASE_FIRST = False
LOG_DEFAULTS_TO_LN = True LOG_DEFAULTS_TO_LN = True
SUPPORTS_USER_DEFINED_TYPES = False
FUNCTIONS = { FUNCTIONS = {
**parser.Parser.FUNCTIONS, **parser.Parser.FUNCTIONS,
"DATE": _parse_date, "DATE": _parse_date,
@ -436,13 +423,13 @@ class BigQuery(Dialect):
exp.Cast: transforms.preprocess([transforms.remove_precision_parameterized_types]), exp.Cast: transforms.preprocess([transforms.remove_precision_parameterized_types]),
exp.Create: _create_sql, exp.Create: _create_sql,
exp.CTE: transforms.preprocess([_pushdown_cte_column_names]), exp.CTE: transforms.preprocess([_pushdown_cte_column_names]),
exp.DateAdd: _date_add_sql("DATE", "ADD"), exp.DateAdd: date_add_interval_sql("DATE", "ADD"),
exp.DateDiff: lambda self, e: f"DATE_DIFF({self.sql(e, 'this')}, {self.sql(e, 'expression')}, {self.sql(e.args.get('unit', 'DAY'))})", exp.DateDiff: lambda self, e: f"DATE_DIFF({self.sql(e, 'this')}, {self.sql(e, 'expression')}, {self.sql(e.args.get('unit', 'DAY'))})",
exp.DateFromParts: rename_func("DATE"), exp.DateFromParts: rename_func("DATE"),
exp.DateStrToDate: datestrtodate_sql, exp.DateStrToDate: datestrtodate_sql,
exp.DateSub: _date_add_sql("DATE", "SUB"), exp.DateSub: date_add_interval_sql("DATE", "SUB"),
exp.DatetimeAdd: _date_add_sql("DATETIME", "ADD"), exp.DatetimeAdd: date_add_interval_sql("DATETIME", "ADD"),
exp.DatetimeSub: _date_add_sql("DATETIME", "SUB"), exp.DatetimeSub: date_add_interval_sql("DATETIME", "SUB"),
exp.DateTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, e.text("unit")), exp.DateTrunc: lambda self, e: self.func("DATE_TRUNC", e.this, e.text("unit")),
exp.GenerateSeries: rename_func("GENERATE_ARRAY"), exp.GenerateSeries: rename_func("GENERATE_ARRAY"),
exp.GroupConcat: rename_func("STRING_AGG"), exp.GroupConcat: rename_func("STRING_AGG"),
@ -484,13 +471,13 @@ class BigQuery(Dialect):
exp.StrToTime: lambda self, e: self.func( exp.StrToTime: lambda self, e: self.func(
"PARSE_TIMESTAMP", self.format_time(e), e.this, e.args.get("zone") "PARSE_TIMESTAMP", self.format_time(e), e.this, e.args.get("zone")
), ),
exp.TimeAdd: _date_add_sql("TIME", "ADD"), exp.TimeAdd: date_add_interval_sql("TIME", "ADD"),
exp.TimeSub: _date_add_sql("TIME", "SUB"), exp.TimeSub: date_add_interval_sql("TIME", "SUB"),
exp.TimestampAdd: _date_add_sql("TIMESTAMP", "ADD"), exp.TimestampAdd: date_add_interval_sql("TIMESTAMP", "ADD"),
exp.TimestampSub: _date_add_sql("TIMESTAMP", "SUB"), exp.TimestampSub: date_add_interval_sql("TIMESTAMP", "SUB"),
exp.TimeStrToTime: timestrtotime_sql, exp.TimeStrToTime: timestrtotime_sql,
exp.Trim: lambda self, e: self.func(f"TRIM", e.this, e.expression), exp.Trim: lambda self, e: self.func(f"TRIM", e.this, e.expression),
exp.TsOrDsAdd: _date_add_sql("DATE", "ADD"), exp.TsOrDsAdd: date_add_interval_sql("DATE", "ADD"),
exp.TsOrDsToDate: ts_or_ds_to_date_sql("bigquery"), exp.TsOrDsToDate: ts_or_ds_to_date_sql("bigquery"),
exp.Unhex: rename_func("FROM_HEX"), exp.Unhex: rename_func("FROM_HEX"),
exp.Values: _derived_table_values_to_unnest, exp.Values: _derived_table_values_to_unnest,
@ -640,13 +627,6 @@ class BigQuery(Dialect):
return super().attimezone_sql(expression) return super().attimezone_sql(expression)
def cast_sql(self, expression: exp.Cast, safe_prefix: t.Optional[str] = None) -> str:
# https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical#json_literals
if expression.is_type("json"):
return f"JSON {self.sql(expression, 'this')}"
return super().cast_sql(expression, safe_prefix=safe_prefix)
def trycast_sql(self, expression: exp.TryCast) -> str: def trycast_sql(self, expression: exp.TryCast) -> str:
return self.cast_sql(expression, safe_prefix="SAFE_") return self.cast_sql(expression, safe_prefix="SAFE_")

View file

@ -25,6 +25,7 @@ class ClickHouse(Dialect):
NORMALIZE_FUNCTIONS: bool | str = False NORMALIZE_FUNCTIONS: bool | str = False
NULL_ORDERING = "nulls_are_last" NULL_ORDERING = "nulls_are_last"
STRICT_STRING_CONCAT = True STRICT_STRING_CONCAT = True
SUPPORTS_USER_DEFINED_TYPES = False
class Tokenizer(tokens.Tokenizer): class Tokenizer(tokens.Tokenizer):
COMMENTS = ["--", "#", "#!", ("/*", "*/")] COMMENTS = ["--", "#", "#!", ("/*", "*/")]
@ -64,8 +65,6 @@ class ClickHouse(Dialect):
} }
class Parser(parser.Parser): class Parser(parser.Parser):
SUPPORTS_USER_DEFINED_TYPES = False
FUNCTIONS = { FUNCTIONS = {
**parser.Parser.FUNCTIONS, **parser.Parser.FUNCTIONS,
"ANY": exp.AnyValue.from_arg_list, "ANY": exp.AnyValue.from_arg_list,

View file

@ -153,6 +153,9 @@ class Dialect(metaclass=_Dialect):
# Determines whether or not CONCAT's arguments must be strings # Determines whether or not CONCAT's arguments must be strings
STRICT_STRING_CONCAT = False STRICT_STRING_CONCAT = False
# Determines whether or not user-defined data types are supported
SUPPORTS_USER_DEFINED_TYPES = True
# Determines how function names are going to be normalized # Determines how function names are going to be normalized
NORMALIZE_FUNCTIONS: bool | str = "upper" NORMALIZE_FUNCTIONS: bool | str = "upper"
@ -546,6 +549,19 @@ def date_trunc_to_time(args: t.List) -> exp.DateTrunc | exp.TimestampTrunc:
return exp.TimestampTrunc(this=this, unit=unit) return exp.TimestampTrunc(this=this, unit=unit)
def date_add_interval_sql(
data_type: str, kind: str
) -> t.Callable[[Generator, exp.Expression], str]:
def func(self: Generator, expression: exp.Expression) -> str:
this = self.sql(expression, "this")
unit = expression.args.get("unit")
unit = exp.var(unit.name.upper() if unit else "DAY")
interval = exp.Interval(this=expression.expression.copy(), unit=unit)
return f"{data_type}_{kind}({this}, {self.sql(interval)})"
return func
def timestamptrunc_sql(self: Generator, expression: exp.TimestampTrunc) -> str: def timestamptrunc_sql(self: Generator, expression: exp.TimestampTrunc) -> str:
return self.func( return self.func(
"DATE_TRUNC", exp.Literal.string(expression.text("unit") or "day"), expression.this "DATE_TRUNC", exp.Literal.string(expression.text("unit") or "day"), expression.this
@ -736,5 +752,15 @@ def any_value_to_max_sql(self: Generator, expression: exp.AnyValue) -> str:
# Used to generate JSON_OBJECT with a comma in BigQuery and MySQL instead of colon # Used to generate JSON_OBJECT with a comma in BigQuery and MySQL instead of colon
def json_keyvalue_comma_sql(self, expression: exp.JSONKeyValue) -> str: def json_keyvalue_comma_sql(self: Generator, expression: exp.JSONKeyValue) -> str:
return f"{self.sql(expression, 'this')}, {self.sql(expression, 'expression')}" return f"{self.sql(expression, 'this')}, {self.sql(expression, 'expression')}"
def is_parse_json(expression: exp.Expression) -> bool:
return isinstance(expression, exp.ParseJSON) or (
isinstance(expression, exp.Cast) and expression.is_type("json")
)
def isnull_to_is_null(args: t.List) -> exp.Expression:
return exp.Paren(this=exp.Is(this=seq_get(args, 0), expression=exp.null()))

View file

@ -39,6 +39,7 @@ class Drill(Dialect):
DATE_FORMAT = "'yyyy-MM-dd'" DATE_FORMAT = "'yyyy-MM-dd'"
DATEINT_FORMAT = "'yyyyMMdd'" DATEINT_FORMAT = "'yyyyMMdd'"
TIME_FORMAT = "'yyyy-MM-dd HH:mm:ss'" TIME_FORMAT = "'yyyy-MM-dd HH:mm:ss'"
SUPPORTS_USER_DEFINED_TYPES = False
TIME_MAPPING = { TIME_MAPPING = {
"y": "%Y", "y": "%Y",
@ -80,7 +81,6 @@ class Drill(Dialect):
class Parser(parser.Parser): class Parser(parser.Parser):
STRICT_CAST = False STRICT_CAST = False
CONCAT_NULL_OUTPUTS_STRING = True CONCAT_NULL_OUTPUTS_STRING = True
SUPPORTS_USER_DEFINED_TYPES = False
FUNCTIONS = { FUNCTIONS = {
**parser.Parser.FUNCTIONS, **parser.Parser.FUNCTIONS,

View file

@ -105,6 +105,7 @@ def _json_format_sql(self: DuckDB.Generator, expression: exp.JSONFormat) -> str:
class DuckDB(Dialect): class DuckDB(Dialect):
NULL_ORDERING = "nulls_are_last" NULL_ORDERING = "nulls_are_last"
SUPPORTS_USER_DEFINED_TYPES = False
# https://duckdb.org/docs/sql/introduction.html#creating-a-new-table # https://duckdb.org/docs/sql/introduction.html#creating-a-new-table
RESOLVES_IDENTIFIERS_AS_UPPERCASE = None RESOLVES_IDENTIFIERS_AS_UPPERCASE = None
@ -135,7 +136,6 @@ class DuckDB(Dialect):
class Parser(parser.Parser): class Parser(parser.Parser):
CONCAT_NULL_OUTPUTS_STRING = True CONCAT_NULL_OUTPUTS_STRING = True
SUPPORTS_USER_DEFINED_TYPES = False
BITWISE = { BITWISE = {
**parser.Parser.BITWISE, **parser.Parser.BITWISE,
@ -158,6 +158,11 @@ class DuckDB(Dialect):
"LIST_REVERSE_SORT": _sort_array_reverse, "LIST_REVERSE_SORT": _sort_array_reverse,
"LIST_SORT": exp.SortArray.from_arg_list, "LIST_SORT": exp.SortArray.from_arg_list,
"LIST_VALUE": exp.Array.from_arg_list, "LIST_VALUE": exp.Array.from_arg_list,
"MEDIAN": lambda args: exp.PercentileCont(
this=seq_get(args, 0), expression=exp.Literal.number(0.5)
),
"QUANTILE_CONT": exp.PercentileCont.from_arg_list,
"QUANTILE_DISC": exp.PercentileDisc.from_arg_list,
"REGEXP_EXTRACT": lambda args: exp.RegexpExtract( "REGEXP_EXTRACT": lambda args: exp.RegexpExtract(
this=seq_get(args, 0), expression=seq_get(args, 1), group=seq_get(args, 2) this=seq_get(args, 0), expression=seq_get(args, 1), group=seq_get(args, 2)
), ),
@ -266,6 +271,9 @@ class DuckDB(Dialect):
exp.cast(e.expression, "timestamp", copy=True), exp.cast(e.expression, "timestamp", copy=True),
exp.cast(e.this, "timestamp", copy=True), exp.cast(e.this, "timestamp", copy=True),
), ),
exp.ParseJSON: rename_func("JSON"),
exp.PercentileCont: rename_func("QUANTILE_CONT"),
exp.PercentileDisc: rename_func("QUANTILE_DISC"),
exp.Properties: no_properties_sql, exp.Properties: no_properties_sql,
exp.RegexpExtract: regexp_extract_sql, exp.RegexpExtract: regexp_extract_sql,
exp.RegexpReplace: regexp_replace_sql, exp.RegexpReplace: regexp_replace_sql,

View file

@ -9,6 +9,7 @@ from sqlglot.dialects.dialect import (
create_with_partitions_sql, create_with_partitions_sql,
format_time_lambda, format_time_lambda,
if_sql, if_sql,
is_parse_json,
left_to_substring_sql, left_to_substring_sql,
locate_to_strposition, locate_to_strposition,
max_or_greatest, max_or_greatest,
@ -89,7 +90,7 @@ def _date_diff_sql(self: Hive.Generator, expression: exp.DateDiff) -> str:
def _json_format_sql(self: Hive.Generator, expression: exp.JSONFormat) -> str: def _json_format_sql(self: Hive.Generator, expression: exp.JSONFormat) -> str:
this = expression.this this = expression.this
if isinstance(this, exp.Cast) and this.is_type("json") and this.this.is_string: if is_parse_json(this) and this.this.is_string:
# Since FROM_JSON requires a nested type, we always wrap the json string with # Since FROM_JSON requires a nested type, we always wrap the json string with
# an array to ensure that "naked" strings like "'a'" will be handled correctly # an array to ensure that "naked" strings like "'a'" will be handled correctly
wrapped_json = exp.Literal.string(f"[{this.this.name}]") wrapped_json = exp.Literal.string(f"[{this.this.name}]")
@ -150,6 +151,7 @@ def _to_date_sql(self: Hive.Generator, expression: exp.TsOrDsToDate) -> str:
class Hive(Dialect): class Hive(Dialect):
ALIAS_POST_TABLESAMPLE = True ALIAS_POST_TABLESAMPLE = True
IDENTIFIERS_CAN_START_WITH_DIGIT = True IDENTIFIERS_CAN_START_WITH_DIGIT = True
SUPPORTS_USER_DEFINED_TYPES = False
# https://spark.apache.org/docs/latest/sql-ref-identifier.html#description # https://spark.apache.org/docs/latest/sql-ref-identifier.html#description
RESOLVES_IDENTIFIERS_AS_UPPERCASE = None RESOLVES_IDENTIFIERS_AS_UPPERCASE = None
@ -222,7 +224,6 @@ class Hive(Dialect):
class Parser(parser.Parser): class Parser(parser.Parser):
LOG_DEFAULTS_TO_LN = True LOG_DEFAULTS_TO_LN = True
STRICT_CAST = False STRICT_CAST = False
SUPPORTS_USER_DEFINED_TYPES = False
FUNCTIONS = { FUNCTIONS = {
**parser.Parser.FUNCTIONS, **parser.Parser.FUNCTIONS,

View file

@ -6,8 +6,10 @@ from sqlglot import exp, generator, parser, tokens, transforms
from sqlglot.dialects.dialect import ( from sqlglot.dialects.dialect import (
Dialect, Dialect,
arrow_json_extract_scalar_sql, arrow_json_extract_scalar_sql,
date_add_interval_sql,
datestrtodate_sql, datestrtodate_sql,
format_time_lambda, format_time_lambda,
isnull_to_is_null,
json_keyvalue_comma_sql, json_keyvalue_comma_sql,
locate_to_strposition, locate_to_strposition,
max_or_greatest, max_or_greatest,
@ -99,6 +101,7 @@ class MySQL(Dialect):
TIME_FORMAT = "'%Y-%m-%d %T'" TIME_FORMAT = "'%Y-%m-%d %T'"
DPIPE_IS_STRING_CONCAT = False DPIPE_IS_STRING_CONCAT = False
SUPPORTS_USER_DEFINED_TYPES = False
# https://prestodb.io/docs/current/functions/datetime.html#mysql-date-functions # https://prestodb.io/docs/current/functions/datetime.html#mysql-date-functions
TIME_MAPPING = { TIME_MAPPING = {
@ -129,6 +132,7 @@ class MySQL(Dialect):
"ENUM": TokenType.ENUM, "ENUM": TokenType.ENUM,
"FORCE": TokenType.FORCE, "FORCE": TokenType.FORCE,
"IGNORE": TokenType.IGNORE, "IGNORE": TokenType.IGNORE,
"LOCK TABLES": TokenType.COMMAND,
"LONGBLOB": TokenType.LONGBLOB, "LONGBLOB": TokenType.LONGBLOB,
"LONGTEXT": TokenType.LONGTEXT, "LONGTEXT": TokenType.LONGTEXT,
"MEDIUMBLOB": TokenType.MEDIUMBLOB, "MEDIUMBLOB": TokenType.MEDIUMBLOB,
@ -141,6 +145,7 @@ class MySQL(Dialect):
"START": TokenType.BEGIN, "START": TokenType.BEGIN,
"SIGNED": TokenType.BIGINT, "SIGNED": TokenType.BIGINT,
"SIGNED INTEGER": TokenType.BIGINT, "SIGNED INTEGER": TokenType.BIGINT,
"UNLOCK TABLES": TokenType.COMMAND,
"UNSIGNED": TokenType.UBIGINT, "UNSIGNED": TokenType.UBIGINT,
"UNSIGNED INTEGER": TokenType.UBIGINT, "UNSIGNED INTEGER": TokenType.UBIGINT,
"YEAR": TokenType.YEAR, "YEAR": TokenType.YEAR,
@ -193,8 +198,6 @@ class MySQL(Dialect):
COMMANDS = tokens.Tokenizer.COMMANDS - {TokenType.SHOW} COMMANDS = tokens.Tokenizer.COMMANDS - {TokenType.SHOW}
class Parser(parser.Parser): class Parser(parser.Parser):
SUPPORTS_USER_DEFINED_TYPES = False
FUNC_TOKENS = { FUNC_TOKENS = {
*parser.Parser.FUNC_TOKENS, *parser.Parser.FUNC_TOKENS,
TokenType.DATABASE, TokenType.DATABASE,
@ -233,7 +236,12 @@ class MySQL(Dialect):
"DATE_FORMAT": format_time_lambda(exp.TimeToStr, "mysql"), "DATE_FORMAT": format_time_lambda(exp.TimeToStr, "mysql"),
"DATE_SUB": parse_date_delta_with_interval(exp.DateSub), "DATE_SUB": parse_date_delta_with_interval(exp.DateSub),
"INSTR": lambda args: exp.StrPosition(substr=seq_get(args, 1), this=seq_get(args, 0)), "INSTR": lambda args: exp.StrPosition(substr=seq_get(args, 1), this=seq_get(args, 0)),
"ISNULL": isnull_to_is_null,
"LOCATE": locate_to_strposition, "LOCATE": locate_to_strposition,
"MONTHNAME": lambda args: exp.TimeToStr(
this=seq_get(args, 0),
format=exp.Literal.string("%B"),
),
"STR_TO_DATE": _str_to_date, "STR_TO_DATE": _str_to_date,
} }
@ -374,7 +382,7 @@ class MySQL(Dialect):
self._match_texts({"INDEX", "KEY"}) self._match_texts({"INDEX", "KEY"})
this = self._parse_id_var(any_token=False) this = self._parse_id_var(any_token=False)
type_ = self._match(TokenType.USING) and self._advance_any() and self._prev.text index_type = self._match(TokenType.USING) and self._advance_any() and self._prev.text
schema = self._parse_schema() schema = self._parse_schema()
options = [] options = []
@ -414,7 +422,7 @@ class MySQL(Dialect):
this=this, this=this,
schema=schema, schema=schema,
kind=kind, kind=kind,
type=type_, index_type=index_type,
options=options, options=options,
) )
@ -558,6 +566,8 @@ class MySQL(Dialect):
exp.StrToTime: _str_to_date_sql, exp.StrToTime: _str_to_date_sql,
exp.Stuff: rename_func("INSERT"), exp.Stuff: rename_func("INSERT"),
exp.TableSample: no_tablesample_sql, exp.TableSample: no_tablesample_sql,
exp.TimestampAdd: date_add_interval_sql("DATE", "ADD"),
exp.TimestampSub: date_add_interval_sql("DATE", "SUB"),
exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"), exp.TimeStrToUnix: rename_func("UNIX_TIMESTAMP"),
exp.TimeStrToTime: lambda self, e: self.sql(exp.cast(e.this, "datetime", copy=True)), exp.TimeStrToTime: lambda self, e: self.sql(exp.cast(e.this, "datetime", copy=True)),
exp.TimeToStr: lambda self, e: self.func("DATE_FORMAT", e.this, self.format_time(e)), exp.TimeToStr: lambda self, e: self.func("DATE_FORMAT", e.this, self.format_time(e)),

View file

@ -32,6 +32,7 @@ def _parse_xml_table(self: Oracle.Parser) -> exp.XMLTable:
class Oracle(Dialect): class Oracle(Dialect):
ALIAS_POST_TABLESAMPLE = True ALIAS_POST_TABLESAMPLE = True
LOCKING_READS_SUPPORTED = True
# See section 8: https://docs.oracle.com/cd/A97630_01/server.920/a96540/sql_elements9a.htm # See section 8: https://docs.oracle.com/cd/A97630_01/server.920/a96540/sql_elements9a.htm
RESOLVES_IDENTIFIERS_AS_UPPERCASE = True RESOLVES_IDENTIFIERS_AS_UPPERCASE = True

View file

@ -381,6 +381,9 @@ class Postgres(Dialect):
**generator.Generator.TRANSFORMS, **generator.Generator.TRANSFORMS,
exp.AnyValue: any_value_to_max_sql, exp.AnyValue: any_value_to_max_sql,
exp.ArrayConcat: rename_func("ARRAY_CAT"), exp.ArrayConcat: rename_func("ARRAY_CAT"),
exp.ArrayContained: lambda self, e: self.binary(e, "<@"),
exp.ArrayContains: lambda self, e: self.binary(e, "@>"),
exp.ArrayOverlaps: lambda self, e: self.binary(e, "&&"),
exp.BitwiseXor: lambda self, e: self.binary(e, "#"), exp.BitwiseXor: lambda self, e: self.binary(e, "#"),
exp.ColumnDef: transforms.preprocess([_auto_increment_to_serial, _serial_to_generated]), exp.ColumnDef: transforms.preprocess([_auto_increment_to_serial, _serial_to_generated]),
exp.Explode: rename_func("UNNEST"), exp.Explode: rename_func("UNNEST"),
@ -401,10 +404,13 @@ class Postgres(Dialect):
exp.Max: max_or_greatest, exp.Max: max_or_greatest,
exp.MapFromEntries: no_map_from_entries_sql, exp.MapFromEntries: no_map_from_entries_sql,
exp.Min: min_or_least, exp.Min: min_or_least,
exp.ArrayOverlaps: lambda self, e: self.binary(e, "&&"),
exp.ArrayContains: lambda self, e: self.binary(e, "@>"),
exp.ArrayContained: lambda self, e: self.binary(e, "<@"),
exp.Merge: transforms.preprocess([_remove_target_from_merge]), exp.Merge: transforms.preprocess([_remove_target_from_merge]),
exp.PercentileCont: transforms.preprocess(
[transforms.add_within_group_for_percentiles]
),
exp.PercentileDisc: transforms.preprocess(
[transforms.add_within_group_for_percentiles]
),
exp.Pivot: no_pivot_sql, exp.Pivot: no_pivot_sql,
exp.RegexpLike: lambda self, e: self.binary(e, "~"), exp.RegexpLike: lambda self, e: self.binary(e, "~"),
exp.RegexpILike: lambda self, e: self.binary(e, "~*"), exp.RegexpILike: lambda self, e: self.binary(e, "~*"),

View file

@ -237,6 +237,7 @@ class Presto(Dialect):
this=seq_get(args, 0), charset=exp.Literal.string("utf-8") this=seq_get(args, 0), charset=exp.Literal.string("utf-8")
), ),
} }
FUNCTION_PARSERS = parser.Parser.FUNCTION_PARSERS.copy() FUNCTION_PARSERS = parser.Parser.FUNCTION_PARSERS.copy()
FUNCTION_PARSERS.pop("TRIM") FUNCTION_PARSERS.pop("TRIM")
@ -310,6 +311,7 @@ class Presto(Dialect):
exp.If: if_sql, exp.If: if_sql,
exp.ILike: no_ilike_sql, exp.ILike: no_ilike_sql,
exp.Initcap: _initcap_sql, exp.Initcap: _initcap_sql,
exp.ParseJSON: rename_func("JSON_PARSE"),
exp.Last: _first_last_sql, exp.Last: _first_last_sql,
exp.Lateral: _explode_to_unnest_sql, exp.Lateral: _explode_to_unnest_sql,
exp.Left: left_to_substring_sql, exp.Left: left_to_substring_sql,
@ -360,6 +362,7 @@ class Presto(Dialect):
exp.WithinGroup: transforms.preprocess( exp.WithinGroup: transforms.preprocess(
[transforms.remove_within_group_for_percentiles] [transforms.remove_within_group_for_percentiles]
), ),
exp.Timestamp: transforms.preprocess([transforms.timestamp_to_cast]),
} }
def interval_sql(self, expression: exp.Interval) -> str: def interval_sql(self, expression: exp.Interval) -> str:

View file

@ -30,6 +30,8 @@ class Redshift(Postgres):
# https://docs.aws.amazon.com/redshift/latest/dg/r_names.html # https://docs.aws.amazon.com/redshift/latest/dg/r_names.html
RESOLVES_IDENTIFIERS_AS_UPPERCASE = None RESOLVES_IDENTIFIERS_AS_UPPERCASE = None
SUPPORTS_USER_DEFINED_TYPES = False
TIME_FORMAT = "'YYYY-MM-DD HH:MI:SS'" TIME_FORMAT = "'YYYY-MM-DD HH:MI:SS'"
TIME_MAPPING = { TIME_MAPPING = {
**Postgres.TIME_MAPPING, **Postgres.TIME_MAPPING,
@ -38,8 +40,6 @@ class Redshift(Postgres):
} }
class Parser(Postgres.Parser): class Parser(Postgres.Parser):
SUPPORTS_USER_DEFINED_TYPES = False
FUNCTIONS = { FUNCTIONS = {
**Postgres.Parser.FUNCTIONS, **Postgres.Parser.FUNCTIONS,
"ADD_MONTHS": lambda args: exp.DateAdd( "ADD_MONTHS": lambda args: exp.DateAdd(

View file

@ -202,6 +202,7 @@ class Snowflake(Dialect):
RESOLVES_IDENTIFIERS_AS_UPPERCASE = True RESOLVES_IDENTIFIERS_AS_UPPERCASE = True
NULL_ORDERING = "nulls_are_large" NULL_ORDERING = "nulls_are_large"
TIME_FORMAT = "'YYYY-MM-DD HH24:MI:SS'" TIME_FORMAT = "'YYYY-MM-DD HH24:MI:SS'"
SUPPORTS_USER_DEFINED_TYPES = False
TIME_MAPPING = { TIME_MAPPING = {
"YYYY": "%Y", "YYYY": "%Y",
@ -234,7 +235,6 @@ class Snowflake(Dialect):
class Parser(parser.Parser): class Parser(parser.Parser):
IDENTIFY_PIVOT_STRINGS = True IDENTIFY_PIVOT_STRINGS = True
SUPPORTS_USER_DEFINED_TYPES = False
FUNCTIONS = { FUNCTIONS = {
**parser.Parser.FUNCTIONS, **parser.Parser.FUNCTIONS,

View file

@ -7,6 +7,7 @@ from sqlglot.dialects.dialect import (
binary_from_function, binary_from_function,
create_with_partitions_sql, create_with_partitions_sql,
format_time_lambda, format_time_lambda,
is_parse_json,
pivot_column_names, pivot_column_names,
rename_func, rename_func,
trim_sql, trim_sql,
@ -242,10 +243,11 @@ class Spark2(Hive):
CREATE_FUNCTION_RETURN_AS = False CREATE_FUNCTION_RETURN_AS = False
def cast_sql(self, expression: exp.Cast, safe_prefix: t.Optional[str] = None) -> str: def cast_sql(self, expression: exp.Cast, safe_prefix: t.Optional[str] = None) -> str:
if isinstance(expression.this, exp.Cast) and expression.this.is_type("json"): if is_parse_json(expression.this):
schema = f"'{self.sql(expression, 'to')}'" schema = f"'{self.sql(expression, 'to')}'"
return self.func("FROM_JSON", expression.this.this, schema) return self.func("FROM_JSON", expression.this.this, schema)
if expression.is_type("json"):
if is_parse_json(expression):
return self.func("TO_JSON", expression.this) return self.func("TO_JSON", expression.this)
return super(Hive.Generator, self).cast_sql(expression, safe_prefix=safe_prefix) return super(Hive.Generator, self).cast_sql(expression, safe_prefix=safe_prefix)

View file

@ -5,6 +5,8 @@ from sqlglot.dialects.presto import Presto
class Trino(Presto): class Trino(Presto):
SUPPORTS_USER_DEFINED_TYPES = False
class Generator(Presto.Generator): class Generator(Presto.Generator):
TRANSFORMS = { TRANSFORMS = {
**Presto.Generator.TRANSFORMS, **Presto.Generator.TRANSFORMS,
@ -13,6 +15,3 @@ class Trino(Presto):
class Tokenizer(Presto.Tokenizer): class Tokenizer(Presto.Tokenizer):
HEX_STRINGS = [("X'", "'")] HEX_STRINGS = [("X'", "'")]
class Parser(Presto.Parser):
SUPPORTS_USER_DEFINED_TYPES = False

View file

@ -580,7 +580,6 @@ class TSQL(Dialect):
) )
class Generator(generator.Generator): class Generator(generator.Generator):
LOCKING_READS_SUPPORTED = True
LIMIT_IS_TOP = True LIMIT_IS_TOP = True
QUERY_HINTS = False QUERY_HINTS = False
RETURNING_END = False RETURNING_END = False

View file

@ -1321,7 +1321,13 @@ class GeneratedAsIdentityColumnConstraint(ColumnConstraintKind):
# https://dev.mysql.com/doc/refman/8.0/en/create-table.html # https://dev.mysql.com/doc/refman/8.0/en/create-table.html
class IndexColumnConstraint(ColumnConstraintKind): class IndexColumnConstraint(ColumnConstraintKind):
arg_types = {"this": False, "schema": True, "kind": False, "type": False, "options": False} arg_types = {
"this": False,
"schema": True,
"kind": False,
"index_type": False,
"options": False,
}
class InlineLengthColumnConstraint(ColumnConstraintKind): class InlineLengthColumnConstraint(ColumnConstraintKind):
@ -1354,7 +1360,7 @@ class TitleColumnConstraint(ColumnConstraintKind):
class UniqueColumnConstraint(ColumnConstraintKind): class UniqueColumnConstraint(ColumnConstraintKind):
arg_types = {"this": False} arg_types = {"this": False, "index_type": False}
class UppercaseColumnConstraint(ColumnConstraintKind): class UppercaseColumnConstraint(ColumnConstraintKind):
@ -4366,6 +4372,10 @@ class Extract(Func):
arg_types = {"this": True, "expression": True} arg_types = {"this": True, "expression": True}
class Timestamp(Func):
arg_types = {"this": False, "expression": False}
class TimestampAdd(Func, TimeUnit): class TimestampAdd(Func, TimeUnit):
arg_types = {"this": True, "expression": True, "unit": False} arg_types = {"this": True, "expression": True, "unit": False}
@ -4579,6 +4589,11 @@ class JSONArrayContains(Binary, Predicate, Func):
_sql_names = ["JSON_ARRAY_CONTAINS"] _sql_names = ["JSON_ARRAY_CONTAINS"]
class ParseJSON(Func):
# BigQuery, Snowflake have PARSE_JSON, Presto has JSON_PARSE
_sql_names = ["PARSE_JSON", "JSON_PARSE"]
class Least(Func): class Least(Func):
arg_types = {"this": True, "expressions": False} arg_types = {"this": True, "expressions": False}
is_var_len_args = True is_var_len_args = True

View file

@ -705,7 +705,9 @@ class Generator:
def uniquecolumnconstraint_sql(self, expression: exp.UniqueColumnConstraint) -> str: def uniquecolumnconstraint_sql(self, expression: exp.UniqueColumnConstraint) -> str:
this = self.sql(expression, "this") this = self.sql(expression, "this")
this = f" {this}" if this else "" this = f" {this}" if this else ""
return f"UNIQUE{this}" index_type = expression.args.get("index_type")
index_type = f" USING {index_type}" if index_type else ""
return f"UNIQUE{this}{index_type}"
def createable_sql(self, expression: exp.Create, locations: t.DefaultDict) -> str: def createable_sql(self, expression: exp.Create, locations: t.DefaultDict) -> str:
return self.sql(expression, "this") return self.sql(expression, "this")
@ -2740,13 +2742,13 @@ class Generator:
kind = f"{kind} INDEX" if kind else "INDEX" kind = f"{kind} INDEX" if kind else "INDEX"
this = self.sql(expression, "this") this = self.sql(expression, "this")
this = f" {this}" if this else "" this = f" {this}" if this else ""
type_ = self.sql(expression, "type") index_type = self.sql(expression, "index_type")
type_ = f" USING {type_}" if type_ else "" index_type = f" USING {index_type}" if index_type else ""
schema = self.sql(expression, "schema") schema = self.sql(expression, "schema")
schema = f" {schema}" if schema else "" schema = f" {schema}" if schema else ""
options = self.expressions(expression, key="options", sep=" ") options = self.expressions(expression, key="options", sep=" ")
options = f" {options}" if options else "" options = f" {options}" if options else ""
return f"{kind}{this}{type_}{schema}{options}" return f"{kind}{this}{index_type}{schema}{options}"
def nvl2_sql(self, expression: exp.Nvl2) -> str: def nvl2_sql(self, expression: exp.Nvl2) -> str:
if self.NVL2_SUPPORTED: if self.NVL2_SUPPORTED:

View file

@ -60,8 +60,8 @@ def qualify(
The qualified expression. The qualified expression.
""" """
schema = ensure_schema(schema, dialect=dialect) schema = ensure_schema(schema, dialect=dialect)
expression = qualify_tables(expression, db=db, catalog=catalog, schema=schema)
expression = normalize_identifiers(expression, dialect=dialect) expression = normalize_identifiers(expression, dialect=dialect)
expression = qualify_tables(expression, db=db, catalog=catalog, schema=schema)
if isolate_tables: if isolate_tables:
expression = isolate_table_selects(expression, schema=schema) expression = isolate_table_selects(expression, schema=schema)

View file

@ -820,7 +820,9 @@ class Parser(metaclass=_Parser):
SHOW_PARSERS: t.Dict[str, t.Callable] = {} SHOW_PARSERS: t.Dict[str, t.Callable] = {}
TYPE_LITERAL_PARSERS: t.Dict[exp.DataType.Type, t.Callable] = {} TYPE_LITERAL_PARSERS = {
exp.DataType.Type.JSON: lambda self, this, _: self.expression(exp.ParseJSON, this=this),
}
MODIFIABLES = (exp.Subquery, exp.Subqueryable, exp.Table) MODIFIABLES = (exp.Subquery, exp.Subqueryable, exp.Table)
@ -848,6 +850,8 @@ class Parser(metaclass=_Parser):
WINDOW_BEFORE_PAREN_TOKENS = {TokenType.OVER} WINDOW_BEFORE_PAREN_TOKENS = {TokenType.OVER}
WINDOW_SIDES = {"FOLLOWING", "PRECEDING"} WINDOW_SIDES = {"FOLLOWING", "PRECEDING"}
FETCH_TOKENS = ID_VAR_TOKENS - {TokenType.ROW, TokenType.ROWS, TokenType.PERCENT}
ADD_CONSTRAINT_TOKENS = {TokenType.CONSTRAINT, TokenType.PRIMARY_KEY, TokenType.FOREIGN_KEY} ADD_CONSTRAINT_TOKENS = {TokenType.CONSTRAINT, TokenType.PRIMARY_KEY, TokenType.FOREIGN_KEY}
DISTINCT_TOKENS = {TokenType.DISTINCT} DISTINCT_TOKENS = {TokenType.DISTINCT}
@ -863,8 +867,6 @@ class Parser(metaclass=_Parser):
LOG_BASE_FIRST = True LOG_BASE_FIRST = True
LOG_DEFAULTS_TO_LN = False LOG_DEFAULTS_TO_LN = False
SUPPORTS_USER_DEFINED_TYPES = True
# Whether or not ADD is present for each column added by ALTER TABLE # Whether or not ADD is present for each column added by ALTER TABLE
ALTER_TABLE_ADD_COLUMN_KEYWORD = True ALTER_TABLE_ADD_COLUMN_KEYWORD = True
@ -892,6 +894,7 @@ class Parser(metaclass=_Parser):
UNNEST_COLUMN_ONLY: bool = False UNNEST_COLUMN_ONLY: bool = False
ALIAS_POST_TABLESAMPLE: bool = False ALIAS_POST_TABLESAMPLE: bool = False
STRICT_STRING_CONCAT = False STRICT_STRING_CONCAT = False
SUPPORTS_USER_DEFINED_TYPES = True
NORMALIZE_FUNCTIONS = "upper" NORMALIZE_FUNCTIONS = "upper"
NULL_ORDERING: str = "nulls_are_small" NULL_ORDERING: str = "nulls_are_small"
SHOW_TRIE: t.Dict = {} SHOW_TRIE: t.Dict = {}
@ -2692,7 +2695,7 @@ class Parser(metaclass=_Parser):
expressions = self._parse_csv(self._parse_primary) expressions = self._parse_csv(self._parse_primary)
else: else:
expressions = None expressions = None
num = self._parse_number() num = self._parse_primary()
if self._match_text_seq("BUCKET"): if self._match_text_seq("BUCKET"):
bucket_numerator = self._parse_number() bucket_numerator = self._parse_number()
@ -2914,6 +2917,10 @@ class Parser(metaclass=_Parser):
) )
connect = self._parse_conjunction() connect = self._parse_conjunction()
self.NO_PAREN_FUNCTION_PARSERS.pop("PRIOR") self.NO_PAREN_FUNCTION_PARSERS.pop("PRIOR")
if not start and self._match(TokenType.START_WITH):
start = self._parse_conjunction()
return self.expression(exp.Connect, start=start, connect=connect) return self.expression(exp.Connect, start=start, connect=connect)
def _parse_order( def _parse_order(
@ -2985,7 +2992,7 @@ class Parser(metaclass=_Parser):
direction = self._match_set((TokenType.FIRST, TokenType.NEXT)) direction = self._match_set((TokenType.FIRST, TokenType.NEXT))
direction = self._prev.text if direction else "FIRST" direction = self._prev.text if direction else "FIRST"
count = self._parse_number() count = self._parse_field(tokens=self.FETCH_TOKENS)
percent = self._match(TokenType.PERCENT) percent = self._match(TokenType.PERCENT)
self._match_set((TokenType.ROW, TokenType.ROWS)) self._match_set((TokenType.ROW, TokenType.ROWS))
@ -3272,7 +3279,12 @@ class Parser(metaclass=_Parser):
if tokens[0].token_type in self.TYPE_TOKENS: if tokens[0].token_type in self.TYPE_TOKENS:
self._prev = tokens[0] self._prev = tokens[0]
elif self.SUPPORTS_USER_DEFINED_TYPES: elif self.SUPPORTS_USER_DEFINED_TYPES:
return exp.DataType.build(identifier.name, udt=True) type_name = identifier.name
while self._match(TokenType.DOT):
type_name = f"{type_name}.{self._advance_any() and self._prev.text}"
return exp.DataType.build(type_name, udt=True)
else: else:
return None return None
else: else:
@ -3816,7 +3828,9 @@ class Parser(metaclass=_Parser):
def _parse_unique(self) -> exp.UniqueColumnConstraint: def _parse_unique(self) -> exp.UniqueColumnConstraint:
self._match_text_seq("KEY") self._match_text_seq("KEY")
return self.expression( return self.expression(
exp.UniqueColumnConstraint, this=self._parse_schema(self._parse_id_var(any_token=False)) exp.UniqueColumnConstraint,
this=self._parse_schema(self._parse_id_var(any_token=False)),
index_type=self._match(TokenType.USING) and self._advance_any() and self._prev.text,
) )
def _parse_key_constraint_options(self) -> t.List[str]: def _parse_key_constraint_options(self) -> t.List[str]:

View file

@ -398,9 +398,10 @@ class MappingSchema(AbstractMappingSchema[t.Dict[str, str]], Schema):
""" """
if schema_type not in self._type_mapping_cache: if schema_type not in self._type_mapping_cache:
dialect = dialect or self.dialect dialect = dialect or self.dialect
udt = Dialect.get_or_raise(dialect).SUPPORTS_USER_DEFINED_TYPES
try: try:
expression = exp.DataType.build(schema_type, dialect=dialect) expression = exp.DataType.build(schema_type, dialect=dialect, udt=udt)
self._type_mapping_cache[schema_type] = expression self._type_mapping_cache[schema_type] = expression
except AttributeError: except AttributeError:
in_dialect = f" in dialect {dialect}" if dialect else "" in_dialect = f" in dialect {dialect}" if dialect else ""

View file

@ -224,10 +224,27 @@ def explode_to_unnest(expression: exp.Expression) -> exp.Expression:
return expression return expression
PERCENTILES = (exp.PercentileCont, exp.PercentileDisc)
def add_within_group_for_percentiles(expression: exp.Expression) -> exp.Expression:
if (
isinstance(expression, PERCENTILES)
and not isinstance(expression.parent, exp.WithinGroup)
and expression.expression
):
column = expression.this.pop()
expression.set("this", expression.expression.pop())
order = exp.Order(expressions=[exp.Ordered(this=column)])
expression = exp.WithinGroup(this=expression, expression=order)
return expression
def remove_within_group_for_percentiles(expression: exp.Expression) -> exp.Expression: def remove_within_group_for_percentiles(expression: exp.Expression) -> exp.Expression:
if ( if (
isinstance(expression, exp.WithinGroup) isinstance(expression, exp.WithinGroup)
and isinstance(expression.this, (exp.PercentileCont, exp.PercentileDisc)) and isinstance(expression.this, PERCENTILES)
and isinstance(expression.expression, exp.Order) and isinstance(expression.expression, exp.Order)
): ):
quantile = expression.this.this quantile = expression.this.this
@ -294,10 +311,13 @@ def preprocess(
transforms_handler = self.TRANSFORMS.get(type(expression)) transforms_handler = self.TRANSFORMS.get(type(expression))
if transforms_handler: if transforms_handler:
if expression_type is type(expression):
if isinstance(expression, exp.Func):
return self.function_fallback_sql(expression)
# Ensures we don't enter an infinite loop. This can happen when the original expression # Ensures we don't enter an infinite loop. This can happen when the original expression
# has the same type as the final expression and there's no _sql method available for it, # has the same type as the final expression and there's no _sql method available for it,
# because then it'd re-enter _to_sql. # because then it'd re-enter _to_sql.
if expression_type is type(expression):
raise ValueError( raise ValueError(
f"Expression type {expression.__class__.__name__} requires a _sql method in order to be transformed." f"Expression type {expression.__class__.__name__} requires a _sql method in order to be transformed."
) )
@ -307,3 +327,12 @@ def preprocess(
raise ValueError(f"Unsupported expression type {expression.__class__.__name__}.") raise ValueError(f"Unsupported expression type {expression.__class__.__name__}.")
return _to_sql return _to_sql
def timestamp_to_cast(expression: exp.Expression) -> exp.Expression:
if isinstance(expression, exp.Timestamp) and not expression.expression:
return exp.cast(
expression.this,
to=exp.DataType.Type.TIMESTAMP,
)
return expression

View file

@ -25,7 +25,7 @@ class TestSessionCaseSensitivity(DataFrameTestBase):
'"Test"', '"Test"',
{"name": "VARCHAR"}, {"name": "VARCHAR"},
"name", "name",
'''SELECT "TEST"."NAME" AS "NAME" FROM "Test" AS "TEST"''', '''SELECT "Test"."NAME" AS "NAME" FROM "Test" AS "Test"''',
), ),
( (
"Column has CS while table does not", "Column has CS while table does not",
@ -41,7 +41,7 @@ class TestSessionCaseSensitivity(DataFrameTestBase):
'"Test"', '"Test"',
{'"Name"': "VARCHAR"}, {'"Name"': "VARCHAR"},
'"Name"', '"Name"',
'''SELECT "TEST"."Name" AS "Name" FROM "Test" AS "TEST"''', '''SELECT "Test"."Name" AS "Name" FROM "Test" AS "Test"''',
), ),
( (
"Lowercase CS table and column", "Lowercase CS table and column",
@ -49,7 +49,7 @@ class TestSessionCaseSensitivity(DataFrameTestBase):
'"test"', '"test"',
{'"name"': "VARCHAR"}, {'"name"': "VARCHAR"},
'"name"', '"name"',
'''SELECT "TEST"."name" AS "name" FROM "test" AS "TEST"''', '''SELECT "test"."name" AS "name" FROM "test" AS "test"''',
), ),
( (
"CS table and column and query table but no CS in query column", "CS table and column and query table but no CS in query column",

View file

@ -9,8 +9,11 @@ class TestBigQuery(Validator):
maxDiff = None maxDiff = None
def test_bigquery(self): def test_bigquery(self):
self.validate_identity("""SELECT JSON '"foo"' AS json_data""")
self.validate_identity("SELECT * FROM tbl FOR SYSTEM_TIME AS OF z") self.validate_identity("SELECT * FROM tbl FOR SYSTEM_TIME AS OF z")
self.validate_identity(
"""SELECT JSON '"foo"' AS json_data""",
"""SELECT PARSE_JSON('"foo"') AS json_data""",
)
self.validate_all( self.validate_all(
"""SELECT """SELECT
@ -176,9 +179,17 @@ WHERE
write={ write={
"bigquery": "SELECT TIMESTAMP_ADD(CAST('2008-12-25 15:30:00+00' AS TIMESTAMP), INTERVAL 10 MINUTE)", "bigquery": "SELECT TIMESTAMP_ADD(CAST('2008-12-25 15:30:00+00' AS TIMESTAMP), INTERVAL 10 MINUTE)",
"databricks": "SELECT DATEADD(MINUTE, 10, CAST('2008-12-25 15:30:00+00' AS TIMESTAMP))", "databricks": "SELECT DATEADD(MINUTE, 10, CAST('2008-12-25 15:30:00+00' AS TIMESTAMP))",
"mysql": "SELECT DATE_ADD(TIMESTAMP('2008-12-25 15:30:00+00'), INTERVAL 10 MINUTE)",
"spark": "SELECT DATEADD(MINUTE, 10, CAST('2008-12-25 15:30:00+00' AS TIMESTAMP))", "spark": "SELECT DATEADD(MINUTE, 10, CAST('2008-12-25 15:30:00+00' AS TIMESTAMP))",
}, },
) )
self.validate_all(
'SELECT TIMESTAMP_SUB(TIMESTAMP "2008-12-25 15:30:00+00", INTERVAL 10 MINUTE)',
write={
"bigquery": "SELECT TIMESTAMP_SUB(CAST('2008-12-25 15:30:00+00' AS TIMESTAMP), INTERVAL 10 MINUTE)",
"mysql": "SELECT DATE_SUB(TIMESTAMP('2008-12-25 15:30:00+00'), INTERVAL 10 MINUTE)",
},
)
self.validate_all( self.validate_all(
"MD5(x)", "MD5(x)",
write={ write={
@ -796,7 +807,7 @@ WHERE
) )
self.validate_identity( self.validate_identity(
"""SELECT JSON_OBJECT(['a', 'b'], [JSON '10', JSON '"foo"']) AS json_data""", """SELECT JSON_OBJECT(['a', 'b'], [JSON '10', JSON '"foo"']) AS json_data""",
"""SELECT JSON_OBJECT('a', JSON '10', 'b', JSON '"foo"') AS json_data""", """SELECT JSON_OBJECT('a', PARSE_JSON('10'), 'b', PARSE_JSON('"foo"')) AS json_data""",
) )
self.validate_identity( self.validate_identity(
"SELECT JSON_OBJECT(['a', 'b'], [STRUCT(10 AS id, 'Red' AS color), STRUCT(20 AS id, 'Blue' AS color)]) AS json_data", "SELECT JSON_OBJECT(['a', 'b'], [STRUCT(10 AS id, 'Red' AS color), STRUCT(20 AS id, 'Blue' AS color)]) AS json_data",

View file

@ -348,6 +348,27 @@ class TestDuckDB(Validator):
"SELECT CAST('2020-05-06' AS DATE) + INTERVAL 5 DAY", "SELECT CAST('2020-05-06' AS DATE) + INTERVAL 5 DAY",
read={"bigquery": "SELECT DATE_ADD(CAST('2020-05-06' AS DATE), INTERVAL 5 DAY)"}, read={"bigquery": "SELECT DATE_ADD(CAST('2020-05-06' AS DATE), INTERVAL 5 DAY)"},
) )
self.validate_all(
"SELECT QUANTILE_CONT(x, q) FROM t",
write={
"duckdb": "SELECT QUANTILE_CONT(x, q) FROM t",
"postgres": "SELECT PERCENTILE_CONT(q) WITHIN GROUP (ORDER BY x) FROM t",
},
)
self.validate_all(
"SELECT QUANTILE_DISC(x, q) FROM t",
write={
"duckdb": "SELECT QUANTILE_DISC(x, q) FROM t",
"postgres": "SELECT PERCENTILE_DISC(q) WITHIN GROUP (ORDER BY x) FROM t",
},
)
self.validate_all(
"SELECT MEDIAN(x) FROM t",
write={
"duckdb": "SELECT QUANTILE_CONT(x, 0.5) FROM t",
"postgres": "SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY x) FROM t",
},
)
with self.assertRaises(UnsupportedError): with self.assertRaises(UnsupportedError):
transpile( transpile(

View file

@ -19,6 +19,7 @@ class TestMySQL(Validator):
}, },
) )
self.validate_identity("CREATE TABLE foo (a BIGINT, UNIQUE (b) USING BTREE)")
self.validate_identity("CREATE TABLE foo (id BIGINT)") self.validate_identity("CREATE TABLE foo (id BIGINT)")
self.validate_identity("CREATE TABLE 00f (1d BIGINT)") self.validate_identity("CREATE TABLE 00f (1d BIGINT)")
self.validate_identity("UPDATE items SET items.price = 0 WHERE items.id >= 5 LIMIT 10") self.validate_identity("UPDATE items SET items.price = 0 WHERE items.id >= 5 LIMIT 10")
@ -107,9 +108,8 @@ class TestMySQL(Validator):
) )
def test_identity(self): def test_identity(self):
self.validate_identity( self.validate_identity("UNLOCK TABLES")
"SELECT * FROM x ORDER BY BINARY a", "SELECT * FROM x ORDER BY CAST(a AS BINARY)" self.validate_identity("LOCK TABLES `app_fields` WRITE")
)
self.validate_identity("SELECT 1 XOR 0") self.validate_identity("SELECT 1 XOR 0")
self.validate_identity("SELECT 1 && 0", "SELECT 1 AND 0") self.validate_identity("SELECT 1 && 0", "SELECT 1 AND 0")
self.validate_identity("SELECT /*+ BKA(t1) NO_BKA(t2) */ * FROM t1 INNER JOIN t2") self.validate_identity("SELECT /*+ BKA(t1) NO_BKA(t2) */ * FROM t1 INNER JOIN t2")
@ -133,6 +133,9 @@ class TestMySQL(Validator):
self.validate_identity("CREATE TABLE A LIKE B") self.validate_identity("CREATE TABLE A LIKE B")
self.validate_identity("SELECT * FROM t1, t2 FOR SHARE OF t1, t2 SKIP LOCKED") self.validate_identity("SELECT * FROM t1, t2 FOR SHARE OF t1, t2 SKIP LOCKED")
self.validate_identity("SELECT a || b", "SELECT a OR b") self.validate_identity("SELECT a || b", "SELECT a OR b")
self.validate_identity(
"SELECT * FROM x ORDER BY BINARY a", "SELECT * FROM x ORDER BY CAST(a AS BINARY)"
)
self.validate_identity( self.validate_identity(
"""SELECT * FROM foo WHERE 3 MEMBER OF(JSON_EXTRACT(info, '$.value'))""" """SELECT * FROM foo WHERE 3 MEMBER OF(JSON_EXTRACT(info, '$.value'))"""
) )
@ -546,7 +549,7 @@ class TestMySQL(Validator):
"oracle": "SELECT a FROM tbl FOR UPDATE", "oracle": "SELECT a FROM tbl FOR UPDATE",
"postgres": "SELECT a FROM tbl FOR UPDATE", "postgres": "SELECT a FROM tbl FOR UPDATE",
"redshift": "SELECT a FROM tbl", "redshift": "SELECT a FROM tbl",
"tsql": "SELECT a FROM tbl FOR UPDATE", "tsql": "SELECT a FROM tbl",
}, },
) )
self.validate_all( self.validate_all(
@ -556,7 +559,7 @@ class TestMySQL(Validator):
"mysql": "SELECT a FROM tbl FOR SHARE", "mysql": "SELECT a FROM tbl FOR SHARE",
"oracle": "SELECT a FROM tbl FOR SHARE", "oracle": "SELECT a FROM tbl FOR SHARE",
"postgres": "SELECT a FROM tbl FOR SHARE", "postgres": "SELECT a FROM tbl FOR SHARE",
"tsql": "SELECT a FROM tbl FOR SHARE", "tsql": "SELECT a FROM tbl",
}, },
) )
self.validate_all( self.validate_all(
@ -868,3 +871,17 @@ COMMENT='客户账户表'"""
def test_json_object(self): def test_json_object(self):
self.validate_identity("SELECT JSON_OBJECT('id', 87, 'name', 'carrot')") self.validate_identity("SELECT JSON_OBJECT('id', 87, 'name', 'carrot')")
def test_is_null(self):
self.validate_all(
"SELECT ISNULL(x)", write={"": "SELECT (x IS NULL)", "mysql": "SELECT (x IS NULL)"}
)
def test_monthname(self):
self.validate_all(
"MONTHNAME(x)",
write={
"": "TIME_TO_STR(x, '%B')",
"mysql": "DATE_FORMAT(x, '%M')",
},
)

View file

@ -6,6 +6,7 @@ class TestOracle(Validator):
dialect = "oracle" dialect = "oracle"
def test_oracle(self): def test_oracle(self):
self.validate_identity("SELECT x FROM t WHERE cond FOR UPDATE")
self.validate_identity("SELECT JSON_OBJECT(k1: v1 FORMAT JSON, k2: v2 FORMAT JSON)") self.validate_identity("SELECT JSON_OBJECT(k1: v1 FORMAT JSON, k2: v2 FORMAT JSON)")
self.validate_identity("SELECT JSON_OBJECT('name': first_name || ' ' || last_name) FROM t") self.validate_identity("SELECT JSON_OBJECT('name': first_name || ' ' || last_name) FROM t")
self.validate_identity("COALESCE(c1, c2, c3)") self.validate_identity("COALESCE(c1, c2, c3)")
@ -50,6 +51,14 @@ class TestOracle(Validator):
"SELECT UNIQUE col1, col2 FROM table", "SELECT UNIQUE col1, col2 FROM table",
"SELECT DISTINCT col1, col2 FROM table", "SELECT DISTINCT col1, col2 FROM table",
) )
self.validate_identity(
"SELECT * FROM T ORDER BY I OFFSET nvl(:variable1, 10) ROWS FETCH NEXT nvl(:variable2, 10) ROWS ONLY",
"SELECT * FROM T ORDER BY I OFFSET COALESCE(:variable1, 10) ROWS FETCH NEXT COALESCE(:variable2, 10) ROWS ONLY",
)
self.validate_identity(
"SELECT * FROM t SAMPLE (.25)",
"SELECT * FROM t SAMPLE (0.25)",
)
self.validate_all( self.validate_all(
"NVL(NULL, 1)", "NVL(NULL, 1)",
@ -82,6 +91,16 @@ class TestOracle(Validator):
"": "CAST(x AS FLOAT)", "": "CAST(x AS FLOAT)",
}, },
) )
self.validate_all(
"CAST(x AS sch.udt)",
read={
"postgres": "CAST(x AS sch.udt)",
},
write={
"oracle": "CAST(x AS sch.udt)",
"postgres": "CAST(x AS sch.udt)",
},
)
def test_join_marker(self): def test_join_marker(self):
self.validate_identity("SELECT e1.x, e2.x FROM e e1, e e2 WHERE e1.y (+) = e2.y") self.validate_identity("SELECT e1.x, e2.x FROM e e1, e e2 WHERE e1.y (+) = e2.y")
@ -218,3 +237,25 @@ INNER JOIN JSON_TABLE(:emps, '$[*]' COLUMNS (empno NUMBER PATH '$')) jt
ON ar.empno = jt.empno""", ON ar.empno = jt.empno""",
pretty=True, pretty=True,
) )
def test_connect_by(self):
start = "START WITH last_name = 'King'"
connect = "CONNECT BY PRIOR employee_id = manager_id AND LEVEL <= 4"
body = """
SELECT last_name "Employee",
LEVEL, SYS_CONNECT_BY_PATH(last_name, '/') "Path"
FROM employees
WHERE level <= 3 AND department_id = 80
"""
pretty = """SELECT
last_name AS "Employee",
LEVEL,
SYS_CONNECT_BY_PATH(last_name, '/') AS "Path"
FROM employees
START WITH last_name = 'King'
CONNECT BY PRIOR employee_id = manager_id AND LEVEL <= 4
WHERE
level <= 3 AND department_id = 80"""
for query in (f"{body}{start}{connect}", f"{body}{connect}{start}"):
self.validate_identity(query, pretty, pretty=True)

View file

@ -207,6 +207,7 @@ class TestPostgres(Validator):
"SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY amount)", "SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY amount)",
write={ write={
"databricks": "SELECT PERCENTILE_APPROX(amount, 0.5)", "databricks": "SELECT PERCENTILE_APPROX(amount, 0.5)",
"postgres": "SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY amount)",
"presto": "SELECT APPROX_PERCENTILE(amount, 0.5)", "presto": "SELECT APPROX_PERCENTILE(amount, 0.5)",
"spark": "SELECT PERCENTILE_APPROX(amount, 0.5)", "spark": "SELECT PERCENTILE_APPROX(amount, 0.5)",
"trino": "SELECT APPROX_PERCENTILE(amount, 0.5)", "trino": "SELECT APPROX_PERCENTILE(amount, 0.5)",

View file

@ -358,6 +358,10 @@ class TestPresto(Validator):
write={"presto": "CAST(x AS TIMESTAMP)"}, write={"presto": "CAST(x AS TIMESTAMP)"},
read={"mysql": "CAST(x AS DATETIME)", "clickhouse": "CAST(x AS DATETIME64)"}, read={"mysql": "CAST(x AS DATETIME)", "clickhouse": "CAST(x AS DATETIME64)"},
) )
self.validate_all(
"CAST(x AS TIMESTAMP)",
read={"mysql": "TIMESTAMP(x)"},
)
def test_ddl(self): def test_ddl(self):
self.validate_all( self.validate_all(
@ -517,6 +521,14 @@ class TestPresto(Validator):
"SELECT SPLIT_TO_MAP('a:1;b:2;a:3', ';', ':', (k, v1, v2) -> CONCAT(v1, v2))" "SELECT SPLIT_TO_MAP('a:1;b:2;a:3', ';', ':', (k, v1, v2) -> CONCAT(v1, v2))"
) )
self.validate_all(
"""JSON '"foo"'""",
write={
"bigquery": """PARSE_JSON('"foo"')""",
"presto": """JSON_PARSE('"foo"')""",
"snowflake": """PARSE_JSON('"foo"')""",
},
)
self.validate_all( self.validate_all(
"SELECT ROW(1, 2)", "SELECT ROW(1, 2)",
read={ read={
@ -824,9 +836,9 @@ class TestPresto(Validator):
self.validate_all( self.validate_all(
"""JSON_FORMAT(JSON '"x"')""", """JSON_FORMAT(JSON '"x"')""",
write={ write={
"bigquery": """TO_JSON_STRING(JSON '"x"')""", "bigquery": """TO_JSON_STRING(PARSE_JSON('"x"'))""",
"duckdb": """CAST(TO_JSON(CAST('"x"' AS JSON)) AS TEXT)""", "duckdb": """CAST(TO_JSON(JSON('"x"')) AS TEXT)""",
"presto": """JSON_FORMAT(CAST('"x"' AS JSON))""", "presto": """JSON_FORMAT(JSON_PARSE('"x"'))""",
"spark": """REGEXP_EXTRACT(TO_JSON(FROM_JSON('["x"]', SCHEMA_OF_JSON('["x"]'))), '^.(.*).$', 1)""", "spark": """REGEXP_EXTRACT(TO_JSON(FROM_JSON('["x"]', SCHEMA_OF_JSON('["x"]'))), '^.(.*).$', 1)""",
}, },
) )
@ -916,14 +928,14 @@ class TestPresto(Validator):
"SELECT CAST(JSON '[1,23,456]' AS ARRAY(INTEGER))", "SELECT CAST(JSON '[1,23,456]' AS ARRAY(INTEGER))",
write={ write={
"spark": "SELECT FROM_JSON('[1,23,456]', 'ARRAY<INT>')", "spark": "SELECT FROM_JSON('[1,23,456]', 'ARRAY<INT>')",
"presto": "SELECT CAST(CAST('[1,23,456]' AS JSON) AS ARRAY(INTEGER))", "presto": "SELECT CAST(JSON_PARSE('[1,23,456]') AS ARRAY(INTEGER))",
}, },
) )
self.validate_all( self.validate_all(
"""SELECT CAST(JSON '{"k1":1,"k2":23,"k3":456}' AS MAP(VARCHAR, INTEGER))""", """SELECT CAST(JSON '{"k1":1,"k2":23,"k3":456}' AS MAP(VARCHAR, INTEGER))""",
write={ write={
"spark": 'SELECT FROM_JSON(\'{"k1":1,"k2":23,"k3":456}\', \'MAP<STRING, INT>\')', "spark": 'SELECT FROM_JSON(\'{"k1":1,"k2":23,"k3":456}\', \'MAP<STRING, INT>\')',
"presto": 'SELECT CAST(CAST(\'{"k1":1,"k2":23,"k3":456}\' AS JSON) AS MAP(VARCHAR, INTEGER))', "presto": 'SELECT CAST(JSON_PARSE(\'{"k1":1,"k2":23,"k3":456}\') AS MAP(VARCHAR, INTEGER))',
}, },
) )

View file

@ -577,10 +577,10 @@ FROM `u_cte` AS `u_cte` PIVOT(SUM(`u_cte`.`f`) AS `sum` FOR `u_cte`.`h` IN ('x',
# dialect: snowflake # dialect: snowflake
SELECT * FROM u PIVOT (SUM(f) FOR h IN ('x', 'y')); SELECT * FROM u PIVOT (SUM(f) FOR h IN ('x', 'y'));
SELECT SELECT
"_Q_0"."G" AS "G", "_q_0"."G" AS "G",
"_Q_0"."'x'" AS "'x'", "_q_0"."'x'" AS "'x'",
"_Q_0"."'y'" AS "'y'" "_q_0"."'y'" AS "'y'"
FROM "U" AS "U" PIVOT(SUM("U"."F") FOR "U"."H" IN ('x', 'y')) AS "_Q_0" FROM "U" AS "U" PIVOT(SUM("U"."F") FOR "U"."H" IN ('x', 'y')) AS "_q_0"
; ;
# title: selecting all columns from a pivoted source and generating spark # title: selecting all columns from a pivoted source and generating spark
@ -668,13 +668,13 @@ WHERE
GROUP BY `dAy`, `top_term`, rank GROUP BY `dAy`, `top_term`, rank
ORDER BY `DaY` DESC; ORDER BY `DaY` DESC;
SELECT SELECT
`top_terms`.`refresh_date` AS `day`, `TOp_TeRmS`.`refresh_date` AS `day`,
`top_terms`.`term` AS `top_term`, `TOp_TeRmS`.`term` AS `top_term`,
`top_terms`.`rank` AS `rank` `TOp_TeRmS`.`rank` AS `rank`
FROM `bigquery-public-data`.`GooGle_tReNDs`.`TOp_TeRmS` AS `top_terms` FROM `bigquery-public-data`.`GooGle_tReNDs`.`TOp_TeRmS` AS `TOp_TeRmS`
WHERE WHERE
`top_terms`.`rank` = 1 `TOp_TeRmS`.`rank` = 1
AND CAST(`top_terms`.`refresh_date` AS DATE) >= DATE_SUB(CURRENT_DATE, INTERVAL 2 WEEK) AND CAST(`TOp_TeRmS`.`refresh_date` AS DATE) >= DATE_SUB(CURRENT_DATE, INTERVAL 2 WEEK)
GROUP BY GROUP BY
`day`, `day`,
`top_term`, `top_term`,

View file

@ -934,5 +934,8 @@ FROM foo""",
assert dtype.is_type("foo") assert dtype.is_type("foo")
assert not dtype.is_type("bar") assert not dtype.is_type("bar")
dtype = exp.DataType.build("a.b.c", udt=True)
assert dtype.is_type("a.b.c")
with self.assertRaises(ParseError): with self.assertRaises(ParseError):
exp.DataType.build("foo") exp.DataType.build("foo")

View file

@ -223,12 +223,12 @@ class TestOptimizer(unittest.TestCase):
self.assertEqual( self.assertEqual(
optimizer.qualify.qualify( optimizer.qualify.qualify(
parse_one( parse_one(
"WITH X AS (SELECT Y.A FROM DB.Y CROSS JOIN a.b.INFORMATION_SCHEMA.COLUMNS) SELECT `A` FROM X", "WITH X AS (SELECT Y.A FROM DB.y CROSS JOIN a.b.INFORMATION_SCHEMA.COLUMNS) SELECT `A` FROM X",
read="bigquery", read="bigquery",
), ),
dialect="bigquery", dialect="bigquery",
).sql(), ).sql(),
'WITH "x" AS (SELECT "y"."a" AS "a" FROM "DB"."Y" AS "y" CROSS JOIN "a"."b"."INFORMATION_SCHEMA"."COLUMNS" AS "columns") SELECT "x"."a" AS "a" FROM "x"', 'WITH "x" AS (SELECT "y"."a" AS "a" FROM "DB"."y" AS "y" CROSS JOIN "a"."b"."INFORMATION_SCHEMA"."COLUMNS" AS "COLUMNS") SELECT "x"."a" AS "a" FROM "x"',
) )
self.assertEqual( self.assertEqual(
@ -776,6 +776,13 @@ FROM READ_CSV('tests/fixtures/optimizer/tpc-h/nation.csv.gz', 'delimiter', '|')
self.assertEqual(exp.DataType.Type.ARRAY, expression.selects[0].type.this) self.assertEqual(exp.DataType.Type.ARRAY, expression.selects[0].type.this)
self.assertEqual(expression.selects[0].type.sql(), "ARRAY<INT>") self.assertEqual(expression.selects[0].type.sql(), "ARRAY<INT>")
def test_user_defined_type_annotation(self):
schema = MappingSchema({"t": {"x": "int"}}, dialect="postgres")
expression = annotate_types(parse_one("SELECT CAST(x AS IPADDRESS) FROM t"), schema=schema)
self.assertEqual(exp.DataType.Type.USERDEFINED, expression.selects[0].type.this)
self.assertEqual(expression.selects[0].type.sql(dialect="postgres"), "IPADDRESS")
def test_recursive_cte(self): def test_recursive_cte(self):
query = parse_one( query = parse_one(
""" """

View file

@ -433,7 +433,7 @@ class TestParser(unittest.TestCase):
self.assertEqual(parse_one("TIMESTAMP(1) WITH TIME ZONE").sql(), "TIMESTAMPTZ(1)") self.assertEqual(parse_one("TIMESTAMP(1) WITH TIME ZONE").sql(), "TIMESTAMPTZ(1)")
self.assertEqual(parse_one("TIMESTAMP(1) WITH LOCAL TIME ZONE").sql(), "TIMESTAMPLTZ(1)") self.assertEqual(parse_one("TIMESTAMP(1) WITH LOCAL TIME ZONE").sql(), "TIMESTAMPLTZ(1)")
self.assertEqual(parse_one("TIMESTAMP(1) WITHOUT TIME ZONE").sql(), "TIMESTAMP(1)") self.assertEqual(parse_one("TIMESTAMP(1) WITHOUT TIME ZONE").sql(), "TIMESTAMP(1)")
self.assertEqual(parse_one("""JSON '{"x":"y"}'""").sql(), """CAST('{"x":"y"}' AS JSON)""") self.assertEqual(parse_one("""JSON '{"x":"y"}'""").sql(), """PARSE_JSON('{"x":"y"}')""")
self.assertIsInstance(parse_one("TIMESTAMP(1)"), exp.Func) self.assertIsInstance(parse_one("TIMESTAMP(1)"), exp.Func)
self.assertIsInstance(parse_one("TIMESTAMP('2022-01-01')"), exp.Func) self.assertIsInstance(parse_one("TIMESTAMP('2022-01-01')"), exp.Func)
self.assertIsInstance(parse_one("TIMESTAMP()"), exp.Func) self.assertIsInstance(parse_one("TIMESTAMP()"), exp.Func)